@objc func keyboardWillShow(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
if self.textView.frame.origin.y == 0 {
let height = keyboardSize.height
self.textButton.frame.origin.y -= height
Log.debug("height: \(height)")
}
}
}
@objc func keyboardWillHide(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
if self.textButton.frame.origin.y != 0 {
let height = keyboardSize.height
self.textButton.frame.origin.y += height
Log.debug("height: \(height)")
}
}
}
У меня есть эта 2 функция, вызываемая соответствующим наблюдателем. Проблема в том, что высота клавиатуры меняется после второго показа клавиатуры. Вот что произошло =>
- KeyBoard show => высота 346
- Keyboard hide => высота 346
- Keyboard show => высота 243
- клавиатура скрыть => высота 346
- Показ клавиатуры => высота 243
Вот где я установил свою кнопку:
textButton.frame = CGRect(x: textView.frame.width - 95, y: textView.frame.height , width: 70, height: 70)
И это моя кнопка функция вызывается из ViewDidLoad ()
@objc func crossButtonTapped(_ sender:UIButton) {
self.textView.resignFirstResponder()
}
Ps Что если я хочу, чтобы клавиатура отображалась при нажатии кнопки и скрывалась при повторном нажатии кнопки?
Спасибо!