ios - keyboardWillShow 第一次显示奇怪的高度

标签 ios swift

当使用自定义键盘时,keyboardWillShow 运行两次(正常行为),第一次高度为 0,但第二次是正确的高度,在我的例子中是 667。问题是这只是真实的第二次显示 viewController。我第一次得到下面的奇怪输出。

第一次打开 View Controller 时的控制台:

keyboardSize CGRect (origin = (x = 0, y = 258), size = (width = 0, height = 2.8876618518302306E-314))

控制台第二次打开 View Controller :

keyboardSize CGRect (origin = (x = 0, y = 0), size = (width = 0, height = 667))

我的代码:

NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name: UIKeyboardWillShowNotification, object: nil)

func keyboardWillShow(notification: NSNotification) {
        if let userInfo = notification.userInfo {
            if let keyboardSize =  (userInfo[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() {
                if keyboardSize.height > 0 { //in case of custom keyborad
                    kbHeight = keyboardSize.height
                    self.animateTextField(true)
                }
            }
        }
    }   

最佳答案

UIKeyboardFrameBeginUserInfoKey 更改为 UIKeyboardFrameEndUserInfoKey。就这些:

func keyboardWillShow(notification: NSNotification) {
  if let userInfo = notification.userInfo {
    if let keyboardSize =  (userInfo[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.CGRectValue() {
      if keyboardSize.height > 0 { //in case of custom keyborad
        kbHeight = keyboardSize.height
        self.animateTextField(true)
                }
            }
        }
    }  

继续编码.......... :)

关于ios - keyboardWillShow 第一次显示奇怪的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31923919/

相关文章:

swift - 多分页 ScrollView - Swift

ios - Swift - 填充表行

swift - 在 Swift 中使用结构进行 Duck 类型

ios - 当我尝试使用 userDefaults 保存到 ui 颜色时,Xcode 给我错误 : Fatal error: Unexpectedly found nil while unwrapping an Optional value

ios - 如何从 App Delegate 重新加载 UIViewController 数据

ios - iOS 中的有效负载数据是什么?

ios - 通过UITableView删除本地文件导致数组越界

ios - UIPopoverPresentationController 始终显示全屏模式弹出窗口

ios - 如何让 UIButton 宣布双击语音?

ios - 为什么具有单个 Cocoapod 依赖项的样板 Cocoa Touch Framework 项目中的样板单元测试甚至没有运行就失败了?