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 中仍然适用)。
我正在尝试滚动视图(以防止键盘隐藏文本字段),但我似乎无法让键盘通知正常运行。
此代码基于 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 中仍然适用)。