2016-10-14 2 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

Я написал это как и упомянул, но все еще выдавал ошибку и показывал предупреждение о аргументе Селектора, что ни один метод не объявлен с объектной-c "keyboardWillShow" – Majid

+0

Я обновил свой ответ. Новый синтаксис для Swift: '#selector (keyboardWillShow)' –

+0

Спасибо, приятель @ Майкл Патцер – Majid

1

Если вы не используете #selector, то это даст неперехваченное исключение NSType и, следовательно, он прекращает приложение.

Смежные вопросы