Я пытаюсь переместить представление вверх в моем приложении, когда клавиатура отображается в электронном письме 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
}
}
}