出现键盘时尝试移动视图 - 一些错误



我正在尝试向上移动整个视图,以便能够查看用户在文本字段中输入的内容。但是,它是我想要的第一次完美工作。但是,当单击键盘上的返回键(以将其删除),然后单击TextField时,我将键盘稍微在Textfield上稍微稍微获得,而与我第一次获得相同的结果。为什么这是?

这是我的代码:

@IBOutlet weak var commentTextField: UITextField!
override func viewDidLoad() {
    super.viewDidLoad()
    commentTextField.delegate = self
    //Keyboard listeners
    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(notification:)), name: NSNotification.Name.UIKeyboardDidShow, object: nil)
    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(notification:)), name: NSNotification.Name.UIKeyboardDidHide, object: nil)
}
@objc func keyboardWillShow(notification: NSNotification) {
    if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
        if self.view.frame.origin.y == 0 {
            self.view.frame.origin.y -= keyboardSize.height
        }
    }
}
@objc func keyboardWillHide(notification: NSNotification) {
    if self.view.frame.origin.y != 0 {
        self.view.frame.origin.y = 0
    }
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    commentTextField.resignFirstResponder()
    return true
}    

替换

UIKeyboardFrameBeginUserInfoKey

UIKeyboardFrameEndUserInfoKey

您错过了变量。

uikeyboardframebeginuserinfokey

nsvalue对象的键,该对象包含一个标识 屏幕坐标中键盘的启动框架矩形。这 框架矩形反映了设备的当前方向。

uikeyboardFrameEnduserInfokey

nsvalue对象的键,该对象包含一个标识 结束屏幕坐标中键盘的框架矩形。这 框架矩形反映了设备的当前方向。

因此,您需要的是检查uikeyboardframeEnduserInfokey而不是uikeyboardframebeginuserinfokey。

做替换,您可能会解决它。

相关内容

  • 没有找到相关文章

最新更新