我有一个聊天视图,我通过更改视图的高度来使用键盘转换textView。但是,当我将键盘类型更改为表情符号,并且还返回到常规键盘时,UIKeyboardWillShowNotification将再次触发并向上移动视图(即键盘的附加高度)。 我如何跟踪这一点并确保我只减去键盘的高度(如果尚未减去),或者只减去表情符号键盘的附加高度?
func keyboardWillShow(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() {
self.view.frame.size.height = self.view.frame.size.height - keyboardSize.height
self.view.layoutIfNeeded()
}
}
我将键盘更改为表情符号
我从表情符号更改键盘并恢复正常
答案 0 :(得分:1)
不使用self.view.frame.height,而是使用屏幕高度。
func keyboardWillShow(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() {
self.view.frame.size.height = UIScreen.mainScreen().bounds.size.height - keyboardSize.height
self.view.layoutIfNeeded()
}
}
更简单的方法是在代码中导入此第三方实用程序
https://github.com/hackiftekhar/IQKeyboardManager
它会自动处理您想要的一切。