首页 > 解决方案 > 出现键盘时快速屏幕移动

问题描述

我的屏幕上有一个文本视图和一个文本字段,我想在编辑文本视图时移动屏幕。这是我的代码

    override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)

    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(_:)), name: .UIKeyboardWillShow, object: nil)

 //   NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(_:)), name: .UIKeyboardWillHide, object: nil)

    print("addd observer")

}
override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    NotificationCenter.default.removeObserver(self, name: .UIKeyboardWillShow, object: nil)
 //   NotificationCenter.default.removeObserver(self, name: .UIKeyboardWillHide, object: nil)
}

@objc func keyboardWillShow(_ sender: Notification) {
    let keyboardSize = (sender.userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue
    print("keyboardwillshow")
    ksize = keyboardSize?.height

}


@objc func textViewDidBeginEditing(_ textView: UITextView) {
        print("textviewedit")
        boxview.frame.origin.y -= ksize
        print("textview")



}
@objc func textViewDidEndEditing(_ textView: UITextView) {

    print("textvieweditend")
    boxview.frame.origin.y = 0

}

当我只编辑 textview 时它可以工作。但是,如果我在关注文本字段(没有退出键盘)后立即编辑文本视图,它不起作用。我已经检查过,textviewDidBeginEditing()但屏幕没有移动..我该如何解决这个问题?欢迎所有建议!

标签: swiftkeyboard

解决方案


我添加self.view.Layoutifneeded()到keyboardwillchange()并且它有效!谢谢大家。


推荐阅读