【问题标题】:iOS 8 get keyboard heightiOS 8 获取键盘高度
【发布时间】:2014-11-24 11:51:26
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

标签: ios iphone ios8


【解决方案1】:

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

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

【讨论】:

  • 不幸的是,这并没有什么不同。需要注意的另一件事是,该应用程序允许用户在多个不同的输入字段之间切换。其中一些已禁用自动更正,因此自动更正栏可能隐藏也可能不隐藏。切换字段时我的高度仍然不稳定......
  • 它对我有用。我的要求是获得高度,以便在其顶部添加自定义输入栏。
  • 似乎不适用于工具栏/附件视图。看我的问题stackoverflow.com/questions/29947592/…
【解决方案2】:

正确的方法是使用 UITextField 的 inputAccesorryView 属性。

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

如文档所述:

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

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

【讨论】:

    【解决方案3】:

    您可能需要使用[self.view setNeedsLayout] 而不是[self.view layoutIfNeeded]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-20
      • 2014-10-14
      • 2016-12-26
      • 2015-05-06
      • 2014-11-17
      • 1970-01-01
      • 1970-01-01
      • 2014-12-11
      相关资源
      最近更新 更多