Мой вид продолжает двигаться вверх при нажатии на мой textField или с помощью клавиатуры с помощью уведомления NS - PullRequest
0 голосов
/ 18 марта 2020

У меня есть вид в стеке с некоторыми полями texField и кнопкой внутри, это используется для страницы входа в систему

У меня также есть кнопка внизу представления, это используется для представления другого контроллера представления, это кнопка работает нормально

Я установил распознаватель tapGesture, который, если вы нажимаете в любом месте представления, клавиатура должна отклонять, и представление go возвращается к своим исходным ограничениям, это также прекрасно работает

Я настроил уведомление NS и в своей функции клавиатураWillShow, когда я нажимаю на текстовое поле, вид перемещается вверх, как я хочу, к

Моя проблема в том моменте, когда я нажимаю на другое текстовое поле или начинаю печатать, перемещается представление еще раз, я не уверен, почему это

По какой-то причине функция вызывается каждый раз, когда я нажимаю на другое текстовое поле или использую клавиатуру, я не понимаю, почему это происходит. была бы признательна за помощь, потому что я новичок в переключении

    view.addSubview(alreadyHaveAccountButton)
    alreadyHaveAccountButton.anchor(top: nil, left: view.leftAnchor, bottom: view.bottomAnchor, right: view.rightAnchor, paddingTop: 0, paddingLeft: 0, paddingBottom: 5, paddingRight: 0, width: 0, height: 60)



    let stack = UIStackView(arrangedSubviews: [emailTextfield,passwordTextfield,fullNameTextfield,signUpButton])
    stack.axis = .vertical
    stack.spacing = 20
    stack.distribution = .fillEqually

    view.addSubview(stack)
    stack.anchor(top: nil, left: view.leftAnchor, bottom: alreadyHaveAccountButton.topAnchor, right:
        view.rightAnchor, paddingTop: 0, paddingLeft: 20, paddingBottom: 50, paddingRight: 20, width: 0, height: 0)

    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: UIWindow.keyboardWillShowNotification, object: nil)

    NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillHide), name: UIWindow.keyboardWillHideNotification, object: nil)


@objc func keyboardWillShow(notification: NSNotification) {

    let notification = notification.userInfo
    let keyboardFrame = notification?[UIResponder.keyboardFrameEndUserInfoKey] as! NSValue
    let keyboardFrameSize = keyboardFrame.cgRectValue

    view.frame.origin.y -= keyboardFrameSize.height
}


@objc func keyboardWillHide(notification: NSNotification) {
    let notification = notification.userInfo
    let keyboardFrame = notification?[UIResponder.keyboardFrameEndUserInfoKey] as! NSValue
    let keyboardFrameSize = keyboardFrame.cgRectValue

    view.frame.origin.y += keyboardFrameSize.height

}
...