Я не могу понять, что не так. У меня есть 2 правых кнопки в навигационной панели, и когда клавиатура включена, я хочу A & B кнопок, а когда клавиатура выключена, A и C или, может быть, просто C. Я сделал это. Im использует UIKeyboardWillShowNotification для проверки, когда клавиатура включена или выключена.Элементы кнопки бара, анимации в UIKeyboardWillShowNotification
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillShow:", name: UIKeyboardWillShowNotification, object: nil)
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillHide:", name: UIKeyboardWillHideNotification, object: nil)
Он отлично работает. Проблема заключается в том, когда я называю методы «KeyboardWillShow» и правая кнопки «KeyboardWillHide» летать Смотрите здесь:. GIF
func keyboardWillShow(sender: NSNotification) {
if let userInfo = sender.userInfo {
if let keyboardHeight = userInfo[UIKeyboardFrameEndUserInfoKey]?.CGRectValue.size.height {
textViewBottomConstraint.constant = keyboardHeight
print("keyboard is shown")
self.navigationItem.rightBarButtonItems = nil
let rightButtons : NSArray = [self.keyboardRightButton, self.cameraRightButton]
self.navigationItem.setRightBarButtonItems(rightButtons as? [UIBarButtonItem], animated: true)
UIView.animateWithDuration(0.1, animations: {() -> Void in
self.view.layoutIfNeeded()
})
}
}
}
Я пытался с этим, он отлично работает, но только при отклонении клавиатуры.
func dismissKeyboard()
{
composeTextView.resignFirstResponder()
self.navigationItem.rightBarButtonItems = nil
self.navigationItem.setRightBarButtonItem(settingsRightButton, animated: false)