2016-06-10 10 views
1

Ich hatte diesen Code gestern perfekt funktioniert, und das einzige, was ich seit damals geändert habe, ist eine andere Tabellenansicht als Root-Tabellenansicht setzen und einen Übergang von seinen Zellen in diese VC und plötzlich jetzt funktioniert es nicht. Vielen Dank für alle, die Ihnen helfen können!Benachrichtigungen in UIView Controller nicht feuern

override func viewDidLoad() { 
    super.viewDidLoad() 

    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(keyboardWillShow(_:)), name: UIKeyboardWillShowNotification, object: self.view.window) 
    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(keyboardWillHide(_:)), name: UIKeyboardWillHideNotification, object: self.view.window) 
} 

func keyboardWillShow(sender: NSNotification) { 
    guard let userInfo: [NSObject: AnyObject] = sender.userInfo, 
     keyboardSize: CGSize = userInfo[UIKeyboardFrameBeginUserInfoKey]?.CGRectValue.size, 
     offset: CGSize = userInfo[UIKeyboardFrameEndUserInfoKey]?.CGRectValue.size else { return } 
    if keyboardSize.height == offset.height { 
     if self.view.frame.origin.y == 0 { 
      UIView.animateWithDuration(0.1, animations: {() -> Void in 
       self.view.frame.origin.y -= keyboardSize.height 
      }) 
     } 
    } else { 
     UIView.animateWithDuration(0.1, animations: {() -> Void in 
      self.view.frame.origin.y += keyboardSize.height - offset.height 
     }) 
    } 
} 

func keyboardWillHide(sender: NSNotification) { 
    guard let userInfo: [NSObject: AnyObject] = sender.userInfo, 
     keyboardSize: CGSize = userInfo[UIKeyboardFrameBeginUserInfoKey]?.CGRectValue.size else { return } 
    self.view.frame.origin.y += keyboardSize.height 
} 

override func viewWillDisappear(animated: Bool) { 
    NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardWillShowNotification, object: self.view.window) 
    NSNotificationCenter.defaultCenter().removeObserver(self, name: UIKeyboardWillHideNotification, object: self.view.window) 
} 
+0

Warum verfolgen Sie nicht zurück, was Sie gestern gearbeitet haben ...? –

+0

Ich tat, es ist in der Frage enthalten. –

+0

Wird 'viewDidLoad' aufgerufen? –

Antwort

0

Stellt sich heraus, der Simulator intelligent genug, um zu wissen, wenn Sie die Tastatur verwenden und nicht. Protip, bevor Sie sich darüber aufregen, dass Ihr Code nicht mehr funktioniert, stellen Sie sicher, dass Sie es zuerst auf einem Gerät ausprobieren.

+0

Oh haha, OK. Außerdem blendet ⌘ + K die Tastatur auf dem Simulator ein oder aus. Könnte hilfreich sein, um die Ergebnisse auch auf dem Simulator zu erhalten. – SaylorTwift2