iOS 8获得键盘高度

Jam*_*mes 29 iphone ios ios8

我无法可靠地获得键盘的实际高度.我正在添加一个自定义工具栏,它意味着直接放在键盘上方.为了实现布局约束,我在屏幕底部和工具栏底部之间添加了一个静态空间约束.当键盘显示时,我将此约束修改为键盘的高度,这在iOS 8中有很大差异.

为了调整spacer的大小,我目前使用以下方法被触发 UIKeyboardDidShowNotification

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

   self.shimConstraint.constant = height;
   [self.view layoutIfNeeded];
}
Run Code Online (Sandbox Code Playgroud)

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

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

Kri*_*lci 35

你这样做的方式是正确的,但你可能想要使用UIKeyboardFrameEndUserInfoKey而不是UIKeyboardFrameBeginUserInfoKey.最终用户键是在完成动画和屏幕上时键盘的框架,因此您知道它将是该帧,而开始键可能并不总是与显示时键盘框架的内容相匹配.

可能还需要额外考虑设备的方向,我没有考虑过,但对于肖像,它应该工作.

  • 它对我有用.我的要求是获得高度,以便在其上添加自定义输入栏. (2认同)

Jas*_*ner 8

执行此操作的正确方法是使用UITextField的inputAccesorryView属性.

无论键盘大小如何,inputAccessoryView都会自动添加到键盘上方.

正如文件所述:

此属性的默认值为nil.将视图分配给此属性会导致该视图显示在标准系统键盘上方(如果提供了一个,则显示在自定义输入视图上方),当文本字段成为第一个响应者时.例如,您可以使用此属性将自定义工具栏附加到键盘

点击此处查看更多信息 https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/InputViews/InputViews.html