gpt4 book ai didi

iOS 键盘高度在 UIKeyboardWillShowNotification/上返回错误

转载 作者:技术小花猫 更新时间:2023-10-29 10:23:48 25 4
gpt4 key购买 nike

我试图在出现键盘时向上滚动我的 TextView 。我正在尝试按照 Apple 自己的教程在 https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html 进行操作。 .我使用的不是 ScrollView 和框架,而是使用自动布局,但总体思路是相同的(订阅键盘通知,并相应地为布局约束设置动画)。但是,当我显示键盘时, TextView 和键盘之间存在间隙:(这是土耳其键盘的屏幕截图,但所有安装的键盘(包括自定义键盘)都存在相同的间隙,标记为红色)。 (iPhone 6 Plus 的屏幕截图,但其他屏幕尺寸也存在此问题)

enter image description here

我看过 can't get correct value of keyboard height in iOS8我尝试同时使用 UIKeyboardFrameEndUserInfoKeyUIKeyboardFrameBeginUserInfoKey 但它们都会导致相同的差距。我试过附加 UIKeyboardWillShowNotificationUIKeyboardDidShowNotification 但我仍然遇到同样的问题。我认为差距与 iOS 8 上某些键盘的建议有关,但当建议不存在时,它不应该报告带有建议的键盘大小。

这是我的代码:

- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
[self registerForKeyboardNotifications];
}

- (void)registerForKeyboardNotifications
{
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillBeShown:)
name:UIKeyboardWillShowNotification object:nil];

[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillBeHidden:)
name:UIKeyboardWillHideNotification object:nil];

}

// Called when the UIKeyboardDidShowNotification is sent.
- (void)keyboardWillBeShown:(NSNotification*)aNotification
{
NSDictionary* info = [aNotification userInfo];
CGRect kb = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];

float height = kb.size.height;
sendZoneBottomConstraint.constant = height;
[UIView animateWithDuration:.2 animations:^{
[self.view layoutIfNeeded];
}];
}

// Called when the UIKeyboardWillHideNotification is sent
- (void)keyboardWillBeHidden:(NSNotification*)aNotification
{
sendZoneBottomConstraint.constant = 0;
[UIView animateWithDuration:.2 animations:^{
[self.view layoutIfNeeded];
}];
}

sendZoneBottomConstraint 是最底部 View 到底部布局指南的底部间距。

更新:我已经尝试将键盘矩形从窗口坐标更改为我的 View 坐标,但没有任何改变。这是我尝试过的:

CGRect kb = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
kb = [self.view.window convertRect:kb toView:self.view];
float height = kb.size.height;

更新,第 2 卷:我还看到了 iOS 8 Orientation change: Keyboard frame does not display correctly但我在 iPhone 5s iOS 7.1 模拟器上也遇到了这个问题,所以这不是 iOS 8 独有的问题。我怎么解决这个问题?我绝对不想在 iOS 8 世界中硬编码任何键盘高度值。

更新,第 3 卷:我还尝试过使用英文键盘打开和关闭建议。它仍然相对于键盘的总大小出现,所以它与建议/自动完成 View 无关:

enter image description here enter image description here

最佳答案

也许您正在使用标签栏 Controller ,如果是,那么当您在显示键盘后为 View 留白时,计算没有标签栏高度的边距底部。

您可以使用以下方法找到标签栏高度:

self.tabBarController?.tabBar.frame.height

关于iOS 键盘高度在 UIKeyboardWillShowNotification/上返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26806272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com