keyboardWillShow事件会进行其他更改

时间:2016-07-03 14:29:31

标签: ios

我有一个聊天视图,我通过更改视图的高度来使用键盘转换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()
    }
}

enter image description here

  

我将键盘更改为表情符号

enter image description here

  

我从表情符号更改键盘并恢复正常

enter image description here

1 个答案:

答案 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

它会自动处理您想要的一切。