2015-02-27 1 views
1

Я пытаюсь прокрутить представление (чтобы клавиатура не скрывала текстовые поля), но я не могу заставить клавиатурное уведомление функционировать должным образом.Xcode 6 - UIKeyboardDidShowNotification unrecognized selector

Этот код составлен на основе документации Apple (см. here).

Во-первых, мы добавляем слушателя в viewDidLoad() подкласса UIViewController.

NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWasShown"), name: UIKeyboardDidShowNotification, object: nil) 

Когда срабатывает событие, он сразу падает с сообщением о unrecognized selector ошибки, и даже не будет печатать на консоли:

func keyboardWasShown(notification: NSNotification) { 
    println("Keyboard will be SHOWN") 
} 

Но без параметра, я получаю «Клавиатура будет ПОКАЗАН "в консоли.

func keyboardWasShown() { 
    println("Keyboard will be SHOWN") 
} 

Что я делаю неправильно?

ответ

1

Это потому, что выбранный вами селектор не указывает, что метод, который он должен уведомить, имеет параметр.

Попробуйте это:

NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWasShown:"), name: UIKeyboardDidShowNotification, object: nil) 

(. Обратите внимание на : в селекторе)

См Objective-C: Calling selectors with multiple arguments (это все еще применяется в Swift).