клавиатураWillShowNotification не работает при переходе с одного поля UItext на другое - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь переместить представление вверх в моем приложении, когда клавиатура отображается в электронном письме UITextField, однако, если пользователь выбирает UITextField перед выбором электронного письма UITextField, представление не перемещается вверх, так какkeyboardWillShowNotification больше не вызывается, если есть способ запустить keyboardWillShowNotification только при выборе определенного UITextField.

. Уведомление keyboardWillShowNotification работает, если пользователь сначала выбирает поле электронной почты ивид перемещается вверх.

class registerViewController: UIViewController{

    let screenSize = UIScreen.main.bounds
    var registerViewer: register!

    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.backgroundColor = .white
        registerViewer = register(frame: CGRect(x: 0, y: 0, width: screenSize.width, height: screenSize.height))
        self.view.addSubview(registerViewer)
        NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: UIResponder.keyboardWillShowNotification, object: nil)
        NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: UIResponder.keyboardWillHideNotification, object: nil)
    }


    @objc func keyboardWillShow(notification: NSNotification) {
        if registerViewer.email.isEditing{
        if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] 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
        }
    }

}
...