【问题标题】:Get the height of keyboard doesn't work on IOS 11 beta获取键盘高度在 IOS 11 beta 上不起作用
【发布时间】:2017-11-08 08:03:38
【问题描述】:

我有以下代码在 IOS 10 上运行,但现在在 IOS 11 beta 上运行时不再运行。

if let userInfo = notification.userInfo {
    if let keyboardSize = (userInfo[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
        print(keyboardSize)
    }
}

这是我打印尺寸时得到的:

(0.0, 0.0, 0.0, 0.0)
(0.0, 736.0, 414.0, 0.0)

有人知道为什么这停止工作了吗?或者如果我有任何其他选择来获得键盘尺寸?

【问题讨论】:

标签: ios swift ios11


【解决方案1】:

使用UIKeyboardFrameEndUserInfoKey 而不是UIKeyboardFrameBeginUserInfoKey

因此,将您的代码更改为以下内容将解决您的问题:

if let userInfo = notification.userInfo {
    if let keyboardSize = (userInfo[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue {
        print(keyboardSize)
    }
}

【讨论】:

  • 这是正确答案,应该这样标记
【解决方案2】:

我也有同样的问题。 Doug Amos 的答案是正确的。我只是想让它更清楚。 这是我的代码:

@objc func keyboardWillShow(notification:NSNotification){

        var userInfo = notification.userInfo!
        var keyboardFrame:CGRect = (userInfo[UIKeyboardFrameBeginUserInfoKey] as! NSValue).cgRectValue
        if keyboardFrame.size.height <= 0 { // to fix bug on iOS 11
            keyboardFrame = (userInfo[UIKeyboardFrameEndUserInfoKey] as! NSValue).cgRectValue
        }
        keyboardFrame = self.view.convert(keyboardFrame, from: nil)
    }

【讨论】:

    【解决方案3】:

    我在 Swif 3+

    的应用中使用了这段代码
        var userInfo = notification.userInfo
        if let keyboardFrame = (userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue{
            print(keyboardFrame.height)
            if keyboardFrame.size.height <= 0 { // To fix bug on iOS 11
                if let newKeyboardFrame = (userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue{
                    print(newKeyboardFrame.height)
                }
            }
        }
        view.layoutIfNeeded()
    

    【讨论】:

      猜你喜欢
      • 2014-11-24
      • 1970-01-01
      • 2018-01-23
      • 1970-01-01
      • 2016-12-26
      • 2015-03-05
      • 2019-04-09
      • 1970-01-01
      • 2015-05-06
      相关资源
      最近更新 更多