【问题标题】:Get height of custom keyboard (iOS 8)获取自定义键盘的高度(iOS 8)
【发布时间】:2015-01-16 19:34:47
【问题描述】:

我需要根据用户激活的默认键盘的高度来调整几个 UI 元素的位置。我知道如何获取默认系统键盘的高度:

keyboardHeight = (sender.userInfo![UIKeyboardFrameBeginUserInfoKey] as NSValue).CGRectValue().height

但是,当我将此代码与自定义键盘(例如 SwiftKey)一起使用时,高度返回为 0。如何获得自定义键盘的高度?抱歉,如果这个问题已经得到解答,但我还没有找到答案……谢谢!

【问题讨论】:

  • 你试过UIKeyboardFrameEndUserInfoKey吗?
  • 在我们的一个应用程序中,我们简单地禁用了所有自定义键盘,主要用于 UI 目的
  • 这就是我所做的临时修复,谢谢!不过,我仍然希望启用自定义键盘,它可以提供更好的 IMO 用户体验。

标签: ios swift keyboard


【解决方案1】:

解决了!事实证明,我在手机上测试的自定义键盘(SwiftKey)有三个keyboardWillShow 回调,原因不明……SwiftKey/iOS 8 部分编码错误?无论如何,我以只使用第一个回调的方式编写代码,但第三个回调返回了一个具有正确信息的发送者。按顺序,三个回调中的每一个上的UIKeyboardFrameEndUserInfoKey 返回的高度为:

No keyboard (0.0)
System's keyboard (also SwiftKey's keyboard without the autocomplete frame above the main keyboard)
Custom keyboard

我使用了来自第三个回调的信息,并且能够正确更新我的 UI 元素。

【讨论】:

  • 你能在这里分享代码吗?它也适用于苹果键盘吗?
  • 嗨,抱歉 - 很遗憾,我无法再访问代码,因为我签署了 NDA 并且无法为自己保留应用程序的副本。我认为如果您查看keyboardWillShow 回调,您将能够找到您要查找的内容。让它打印每个回调并查看它返回的值;您应该在其中一个回调中找到您正在寻找的那个。
  • 具体来说,打印出keyboardHeight = (sender.userInfo![UIKeyboardFrameBeginUserInfoKey] as NSValue).CGRectValue().height 可能会对您有所帮助。
猜你喜欢
  • 2014-11-24
  • 2014-12-11
  • 2017-01-30
  • 2014-08-11
  • 2019-04-09
  • 2014-10-18
  • 2019-08-23
  • 1970-01-01
  • 2014-11-15
相关资源
最近更新 更多