2016-02-05 5 views
0

Я не могу понять, что не так. У меня есть 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) 

ответ

0

решаемые с:

func textViewShouldBeginEditing(textView: UITextView) -> Bool 
{ 

    self.navigationItem.rightBarButtonItems = nil 
    let rightButtons : NSArray = [self.keyboardRightButton, self.cameraRightButton] 
    self.navigationItem.setRightBarButtonItems(rightButtons as? [UIBarButtonItem], animated: true) 

    return true 
} 

Благодарности