首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在iOS Swift中可靠地获取键盘高度?

如何在iOS Swift中可靠地获取键盘高度?
EN

Stack Overflow用户
提问于 2018-07-02 17:42:56
回答 4查看 3.8K关注 0票数 2

我有这个代码来检测键盘何时显示并得到它的高度。

代码语言:javascript
复制
@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。

为什么会发生这种情况?以及如何修复它?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-07-02 17:47:37

不知道你的确切场景,但试着使用IQKeyboard,它会解决你所有的问题。

票数 -1
EN

Stack Overflow用户

发布于 2018-07-02 17:50:03

在is answer中,我发现我应该使用UIKeyboardFrameEndUserInfoKey而不是UIKeyboardFrameBeginUserInfoKey

票数 6
EN

Stack Overflow用户

发布于 2018-07-02 17:50:55

你可以通过以下方式获得键盘的框架

代码语言:javascript
复制
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) {
    let center = NotificationCenter.default
    center.removeObserver(self, name: NSNotification.Name.UIKeyboardDidShow, object: nil)
}



func keyBoardDidShow(_ notification:Notification)
{
    print((notification.userInfo?["UIKeyboardBoundsUserInfoKey"] as! CGRect).height)
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51133218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档