Xcode 6 - UIKeyboardDidShowNotification 无法识别的选择器

Xcode 6 - UIKeyboardDidShowNotification unrecognized selector

我正在尝试滚动视图(以防止键盘隐藏文本字段),但我似乎无法让键盘通知正常运行。

此代码基于 Apple 的文档(请参阅 here)。

首先,我们在 UIViewController 子类的 viewDidLoad() 中添加侦听器。

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

当事件触发时,它会立即崩溃并显示 unrecognized selector 错误消息,甚至不会打印到控制台:

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

但是没有参数,我在控制台中得到 "Keyboard will be SHOWN"。

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

我做错了什么?

那是因为您使用的选择器没有指定它应该通知的方法有一个参数。

试试这个:

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

(注意选择器中的 :。)

参见 Objective-C: Calling selectors with multiple arguments(这在 Swift 中仍然适用)。