代码之家  ›  专栏  ›  技术社区  ›  Chen Li Yong

如何在iOS Swift中可靠地获取键盘高度?[副本]

  •  1
  • Chen Li Yong  · 技术社区  · 6 年前

    这个问题已经有了答案:

    我有这个代码来检测何时显示键盘并获取其高度。

    @objc func keyboardWasShown (_ notification: Notification) {
        let keyboardSize = (notification.userInfo![UIKeyboardFrameBeginUserInfoKey] as! NSValue).cgRectValue.size;
        print ("KEYBOARD SIZE: \(keyboardSize.height)");
    }
    

    首先,当我第一次点击uitextview使其成为第一响应者时,控制台显示271.0点。

    然后我点击视图关闭键盘。然后我再次点击uitextview。现在显示226.0分。

    在第一次和随后的测试中,键盘布局没有变化。一开始我总是得到271,然后下一个总是226。正确的是271。

    为什么会这样?如何修复?

    4 回复  |  直到 6 年前
        1
  •  0
  •   Syed faizan ali    6 年前

    不知道你的具体情况,但尝试使用iqkeyboard它将处理你所有的问题。

        2
  •  2
  •   Sean Kladek    6 年前

    你可以通过

    override func viewDidLoad() {
        super.viewDidLoad()
        let center = NotificationCenter.default
        center.addObserver(self, selector: #selector(keyBoardDidShow(_:)), name: NSNotification.Name.UIKeyboardDidShow, object: nil)
        // Do any additional setup after loading the view.
    }
    override func viewDidDisappear(_ animated: Bool) {
        center.removeObserver(self, name: NSNotification.Name.UIKeyboardDidShow, object: nil)
    }
    
    
    
    func keyBoardDidShow(_ notification:Notification)
    {
        print((notification.userInfo?["UIKeyboardBoundsUserInfoKey"] as! CGRect).height)
    }
    
        3
  •  1
  •   Chen Li Yong    6 年前

    来自IS answer ,我发现我应该用 UIKeyboardFrameEndUserInfoKey 而不是 UIKeyboardFrameBeginUserInfoKey .

        4
  •  1
  •   aBilal17 Deepak    6 年前

    只是导入 this 库到您的项目中。它会自动处理每件事。