2016-10-14 7 views
3

私はスタックオーバーフローについて多くのことを検索しますが、その解決策によれば、私のプログラムは言及と同じですが動作しません。swift 3、認識できないセレクタがインスタンスに送られました(KeyboardWillShow)

func subscribeToKeyboardNotifications(){ 

    NotificationCenter.default.addObserver(self, selector:Selector(("keyboardWillShow:")), name:NSNotification.Name.UIKeyboardWillShow, object: nil) 
} 


func keyboardWillShow(notification:NSNotification){ 

    view.frame.origin.y -= getKeyboardHeight(notification: notification) 
} 

答えて

7

セレクタのためのあなたの引数がそうのように、#selector(keyboardWillShow)する必要があります:

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

func keyboardWillShow(notification:NSNotification) { 
    view.frame.origin.y -= getKeyboardHeight(notification: notification) 
} 
+0

私はそれを記述しましたが、引き続きObject-c "keyboardWillShow"で宣言されたメソッドがないことをセレクタ引数に警告と警告を表示しています – Majid

+0

私は自分の答えを更新しました。 Swiftの新しい構文は次のとおりです: '#selector(keyboardWillShow)' –

+0

ありがとうございました@Michael Patzer – Majid

1

あなたが#selectorを使用しない場合、それはNSTypeのキャッチされない例外を与えるので、それはアプリを終了します。

関連する問題