У меня есть следующий код, когда вы нажимаете на UITextView, он будет отображаться при отображении клавиатуры.
Это код в моем ViewDidLoad()
NotificationCenter.default.addObserver(self, selector:
#selector(ViewController.keyboardWillShow), name: NSNotification.Name.UIKeyboardDidShow, object: nil)
NotificationCenter.default.addObserver(self, selector:
#selector(ViewController.keyboardWillHide), name: NSNotification.Name.UIKeyboardWillHide, object: nil)
self.hideKeyboardWhenTappedAround()
У меня есть следующее расширение
extension UIViewController {
func hideKeyboardWhenTappedAround() {
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard))
tap.cancelsTouchesInView = false
view.addGestureRecognizer(tap)
}
@objc func dismissKeyboard() {
view.endEditing(true)
}
}
И, наконец, у меня есть следующее для скрытия и показаклавиатура.
@objc func keyboardWillShow(notification: NSNotification){
guard let userInfo = notification.userInfo else {return}
guard let keyboardSize = userInfo[UIKeyboardFrameEndUserInfoKey] as? NSValue else {return}
let keyboardFrame = keyboardSize.cgRectValue
if (self.view.frame.origin.y == 0) {
self.view.frame.origin.y -= 175
}
}
@objc func keyboardWillHide(notification: NSNotification) {
if (self.view.frame.origin.y != 0) {
self.view.frame.origin.y = 0
}
}
Есть ли лучший способ поднять интерфейс, когда клавиатура подходит для OS13.1 +