2017-10-13 23 views
0

キーボードの表示/非表示のための通知センターの登録がアプリケーションで機能していました。iOS 11でキーボードの表示/非表示通知センターが動作しない

func registerNotificationObservers() 
{ 
    NotificationCenter.default.addObserver(self, selector: #selector(ArticleDetailsVC.keyboardWillShow), name: NSNotification.Name.UIKeyboardWillShow, object: nil) 

    NotificationCenter.default.addObserver(self, selector: #selector(ArticleDetailsVC.keyboardWillHide), name: NSNotification.Name.UIKeyboardWillHide, object: nil) 

    } 

func removeNotificationObservers() 
{ 

    NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIKeyboardWillShow, object: nil) 

    NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIKeyboardWillHide, object: nil) 


} 

func keyboardWillShow(notification: NSNotification) 
{ 
    if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue 
    { 
     if self.commentsTableView.frame.origin.y == 0{ 
      print("keyboardWillShow ..") 
      self.tableViewFooter.frame.origin.y -= keyboardSize.height - 50 
      self.commentsTableView.frame.origin.y -= keyboardSize.height 

     } 


    } 

} 


func keyboardWillHide(notification: NSNotification) 
{ 
    if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue 
    { 
     if self.commentsTableView.frame.origin.y != 0{ 

      print("keyboardWillHide ..") 
      self.tableViewFooter.frame.origin.y += keyboardSize.height + 50 
      self.commentsTableView.frame.origin.y += keyboardSize.height 

     } 


    } 
} 

私は何をする必要がありますか? ありがとうございます。

+0

は、使用してyou'reコードを表示します。 –

+0

コード – user1553381

+0

を追加しました。あなたのkeyboardWillShowおよびkeyboardWillHideメソッドの前に@objcを追加する必要があります。 '@objc func keyboardWillHide(_通知:通知)'と '@objc func keyboardWillShow(_通知:通知)' –

答えて

2

あなたのオブザーバーのための代わりに、この更新の構文を試してみてください。

func registerNotificationObservers() { 
    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: .UIKeyboardWillShow, object: nil) 
    NotificationCenter.default.addObserver(self, selector:#selector(keyboardWillHide), name: .UIKeyboardWillHide, object: nil) 
} 

func removeNotificationObservers() { 
    NotificationCenter.default.removeObserver(self, name: .UIKeyboardWillShow, object: nil) 
    NotificationCenter.default.removeObserver(self, name: .UIKeyboardWillHide, object: nil) 
} 

@objc func keyboardWillShow(_ notification: Notification) { 
    print("keyboardWillShow") 
} 


@objc func keyboardWillHide(_ notification: Notification) { 
    print("keyboardWillHide") 
} 
+0

私はあなたのコードを試しています、それは私と一緒に動作します、今問題は、テーブルとフッターがうまくいかないことです。私はこのコードを意味します 'self.tableViewFooter.frame.origin.y - = keyboardSize.height - 50 self.commentsTableView.frame.origin.y - = keyboardSize.height' – user1553381

+0

@ user1553381、これはロジックのために何が間違っているのか分かりません。問題は、表示/非表示です。おそらく、新しい質問をしたり、より関連性の高いコードを追加したりできます。 –

+0

ok私はこれを行うでしょう、このコードはios 10でうまくいっていましたが、iOS 11にアップデートしてしまえばうまくスクロールせず、無駄です。 – user1553381

関連する問題