IKeyboardWillShowNotification被调用

IKeyboardWillShowNotification被调用

键盘显示后,我需要向上移动UIView。但是我现在面临的问题是,当我使用自定义键盘(例如SwiftKey)时,我的UIKeyboardWillShowNotification被调用了三次,导致动画效果不佳。
有没有办法只处理最近的通知?我可以轻松避开第一个,因为高度为0,但是第二个看起来像一个有效的高度,但我找不到解决该问题的答案。
这是我到目前为止的内容:

override func viewDidLoad() {
    super.viewDidLoad()

    NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillAppear:", name: UIKeyboardWillShowNotification, object: nil)
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillDisappear:", name: UIKeyboardWillHideNotification, object: nil)
}

override func viewWillDisappear(animated: Bool) {
    super.viewWillDisappear(animated)

    NSNotificationCenter.defaultCenter().removeObserver(self)
}

func keyboardWillAppear(notification: NSNotification){
    print("keyboard appear")
    if let keyboardSize = (notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.CGRectValue() {
        print("with height: \(keyboardSize.height)")
        if keyboardSize.height == 0.0 {
            return
        }
        self.txtViewBottomSpace.constant = keyboardSize.height
        UIView.animateWithDuration(0.4, animations: { () -> Void in
            self.view.layoutIfNeeded()
        })
    }
}

func keyboardWillDisappear(notification: NSNotification){
    print("Keyboard disappear")
    self.txtViewBottomSpace.constant = 0.0
    UIView.animateWithDuration(0.4, animations: { () -> Void in
        self.view.layoutIfNeeded()
    })
}

我的日志输出是:

键盘出现
高度:0.0
键盘出现
高度:216.0
键盘出现
高度:258.0
键盘消失

那么,有什么办法只能处理第三个通知而“忽略”前两个通知吗?

最佳答案

将所有波纹管字段设置为NO可以解决此问题。

Capitalizaion: None
Correction: No
Smart Dashes: No
Smart insert: No
Smart Quote: No
Spell Checking: No

关于ios - UIKeyboardWillShowNotification被调用了三次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36033153/

10-10 21:14