Ошибка движущегося вида, скрытого клавиатурой - PullRequest
0 голосов
/ 24 августа 2018

Моя проблема заключается в следующем:

  1. У меня есть этот вид: Исходный вид . Как видите, в данный момент пользователь нажимает на текстовую область, она будет закрыта клавиатурой. По этой причине я реализовал это решение, опубликованное в других вопросах.

    var moved = false
    .....
    override func viewWillAppear(_ animated: Bool) {
       super.viewWillAppear(animated)
    
       NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillChange(notification:)),
                                           name: NSNotification.Name.UIKeyboardWillChangeFrame, object: nil)
    
       NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide),
                                           name: NSNotification.Name.UIKeyboardWillHide, object: nil)
    }
    
    @objc func keyboardWillHide() {
       self.view.frame.origin.y = 0
       moved = false
    }
    
    @objc func keyboardWillChange(notification: NSNotification) {
    if let keyboardSize = (notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue {
        if self.textField.isFirstResponder {
            if !moved {
                self.view.frame.origin.y = -keyboardSize.height
                moved = true
            }
        } else if self.textArea.isFirstResponder {
            if !moved {
                self.view.frame.origin.y = -keyboardSize.height
                moved = true
            }
        }
    }
    }
    
    override func viewWillDisappear(_ animated: Bool) {
       super.viewWillDisappear(animated)
    
       NotificationCenter.default.removeObserver(self,
                                              name: NSNotification.Name.UIKeyboardWillChangeFrame, object: nil)
       NotificationCenter.default.removeObserver(self,
                                              name: NSNotification.Name.UIKeyboardWillHide, object: nil)
    }
    
  2. Когда я коснулся текста , это происходит Как вы можете видеть сейчас, я не вижу, что я пишу поверх текстовой области.

  3. Если сейчас я коснусь текстового поля, а затем снова коснусь текстовой области , то, как он ведет себя Это именно то, что я хочу на первом шаге.

Вот как я организовал представление

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