iOS 8 获取键盘高度

标签 ios iphone ios8

我无法可靠地获取键盘的实际高度。我正在添加一个自定义工具栏,该工具栏将直接放置在键盘上方。为了使用布局约束来做到这一点,我在屏幕底部和工具栏底部之间添加了一个静态空间约束。当显示键盘时,我将此约束修改为键盘的高度,这在 iOS 8 中变化很大。

要调整间隔器的大小,我目前使用以下在 UIKeyboardDidShowNotification 上触发的方法

-(void)keyboardDidShow:(NSNotification*)notification
{
   CGFloat height = [[notification.userInfo objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].height;

   self.shimConstraint.constant = height;
   [self.view layoutIfNeeded];
}

这有时会正确地调整约束的大小,但返回的键盘高度通常是完全不正确的。显示键盘后可靠地获取键盘高度的最佳方法是什么?

编辑:该应用程序允许用户在多个不同的输入字段之间切换。其中一些已禁用自动更正功能,因此自动更正栏可能会隐藏也可能不会隐藏,并且在切换字段时会返回不正确的高度。

最佳答案

您的操作方式是正确的,但您可能希望使用 UIKeyboardFrameEndUserInfoKey 而不是 UIKeyboardFrameBeginUserInfoKey。最终用户键是键盘在屏幕上完成动画后的框架,因此您知道它将是那个框架,而开始键可能并不总是与键盘框架显示时的键盘框架相匹配。

可能还需要额外考虑设备的方向,我没有研究过,但对于纵向,它应该可行。

关于iOS 8 获取键盘高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26110878/

相关文章:

ios - 使用 Storyboard 不会改变选项卡栏项目图像

ios - SwiftUI:拖动逻辑错误或者这是一个错误?

iphone - UIVIew 翻转垂直动画

ios - 过滤 UItableview Swift IOS

iOS强制App使用自定义键盘

ios - 无法在 (UIView) 上设置 (cornerRadius) 用户定义的检查属性

ios - 简单的collectionView动画

ios - [NSLayoutConstraint constraintsWithVisualFormat :options:metrics:views:] 的选项参数作为 NULL 值传递的内容

ios - 是否有适用于 iOS 8 UI 布局的 Kitchen Sink?

ios - 隐藏通过 NotificationService Extension 收到的通知