Моя проблема заключается в следующем:
У меня есть этот вид: Исходный вид . Как видите, в данный момент пользователь нажимает на текстовую область, она будет закрыта клавиатурой. По этой причине я реализовал это решение, опубликованное в других вопросах.
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)
}
Когда я коснулся текста , это происходит Как вы можете видеть сейчас, я не вижу, что я пишу поверх текстовой области.
Если сейчас я коснусь текстового поля, а затем снова коснусь текстовой области , то, как он ведет себя Это именно то, что я хочу на первом шаге.
Вот как я организовал представление