Ios 显示键盘,并切换键盘顶部的预测文本框。视图向上弹出,给用户留下一个黑屏

Ios 显示键盘,并切换键盘顶部的预测文本框。视图向上弹出,给用户留下一个黑屏,ios,swift,Ios,Swift,我有一个错误,当显示键盘时,键盘顶部的预测文本框被切换,视图就会弹出,给用户留下一个黑屏。发生这种情况的原因是因为我使用了-=运算符,每次调用此方法时都会对值进行复合。此方法可以在一行中多次调用。我在想办法解决这个问题 func getKeyboardHeight(notification: NSNotification) -> CGFloat { let userInfo = notification.userInfo let keyboardSize = userIn

我有一个错误,当显示键盘时,键盘顶部的预测文本框被切换,视图就会弹出,给用户留下一个黑屏。发生这种情况的原因是因为我使用了-=运算符,每次调用此方法时都会对值进行复合。此方法可以在一行中多次调用。我在想办法解决这个问题

func getKeyboardHeight(notification: NSNotification) -> CGFloat {

    let userInfo = notification.userInfo
    let keyboardSize = userInfo![UIKeyboardFrameEndUserInfoKey] as! NSValue
    return keyboardSize.CGRectValue().height

}

func keyboardWillShow(notification: NSNotification) {

    if bottomTextField.isFirstResponder() {
        self.view.frame.origin.y -= getKeyboardHeight(notification)
    }

}

func keyboardWillHide(notification: NSNotification) {

    if bottomTextField.isFirstResponder() {
        self.view.frame.origin.y += getKeyboardHeight(notification)
    }

}

通过将self.view.frame.origin.y-=getKeyboardHeight(通知)切换到view.frame.origin.y=-getKeyboardHeight(通知),解决了我的问题

func keyboardWillShow(notification: NSNotification) {

    if bottomTextField.isFirstResponder() {
        self.view.frame.origin.y = -getKeyboardHeight(notification)
    }

}

通过将self.view.frame.origin.y-=getKeyboardHeight(通知)切换到view.frame.origin.y=-getKeyboardHeight(通知),解决了我的问题

func keyboardWillShow(notification: NSNotification) {

    if bottomTextField.isFirstResponder() {
        self.view.frame.origin.y = -getKeyboardHeight(notification)
    }

}