Swift View движется вверх не когда клавиатура показывает - PullRequest
0 голосов
/ 08 апреля 2020

Когда я нажимаю текстовое поле PassTextField, представление увеличивается в соответствии с назначением

(self.view.frame.origin.y - = 100)

и далее Я нажимаю IDTextField, вид увеличивается, я не предназначен (Это не self.view.frame.origin.y - = 100). Не должно go вверх.

Изображение ошибки - 1: сначала нажмите PassTextField

Изображение ошибки - 2: Нажмите IDTextField после нажатия PassTextField

class LoginViewController: UIViewController, UITextFieldDelegate {

    @IBOutlet weak var IDTextField: UITextField!
    @IBOutlet weak var PassTextField: UITextField!

    var ActivateTextfield : UITextField!

    func textFieldDidBeginEditing(_ textField: UITextField) {

        ActivateTextfield = textField

    }

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?){
             self.view.endEditing(true)
       }

    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        ActivateTextfield.resignFirstResponder()

     return true
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        addKeyboardNotification()
        IDTextField.delegate = self
        PassTextField.delegate = self
    }

}

extension LoginViewController{

    func addKeyboardNotification() {

        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(_ noti : Notification ){

        if let keyboardframe = noti.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue {

            let height = keyboardframe.cgRectValue.height

            if self.view.frame.origin.y >= 0 {

              self.view.frame.origin.y -= 100

        }

        }

    }

    @objc func KeyBoardwillHide(_ noti : Notification ){

        self.view.frame.origin.y = 0
    }

}

1 Ответ

0 голосов
/ 08 апреля 2020
if self.view.frame.origin.y >= 0 {

          let keyBoardHeight = (note.userInfo?[UIResponder.keyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue.height
          let keyboardDuration = (note.userInfo?[UIResponder.keyboardAnimationDurationUserInfoKey] as? NSNumber)?.doubleValue ?? 0
          self.view.frame.origin.y  = -(keyBoardHeight!+3)
             UIView.animate(withDuration: keyboardDuration) {
               self.view.layoutIfNeeded()
             }

 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...