假设一个视图控制器包含一个UITextView和一个UITextField。如果目标是仅从UITextView的观察键盘通知,那么下面的代码不应该工作吗?
不幸的是,它不起作用。与通知关联的函数永远不会被调用。是否有一种方法来观察键盘通知只从UITextView?
它重要的原因是因为我们需要滚动父UIView为UITextView而不是为UITextField。否则,键盘会遮挡UITextView。
class CustomViewController: UIViewController {
@IBOutlet weak var promptField: UITextView!
@IBOutlet weak var nameField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// Get notified when keyboard appears
NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillShow:", name: UIKeyboardWillShowNotification, object: promptField)
}
func keyboardWillShow(notification: NSNotification) {
// Do stuff
}
}
NSNotificationCenter.defaultCenter().addObserver(self,
selector: "keyboardWillShow:", name: UIKeyboardWillShowNotification,
object: promptField)
该代码的结果将是不发送通知。object
永远不会是promptField
。对象是发送者,它不是显示键盘和发送通知的字段——它是应用程序。
你想问的问题可能是谁是第一响应者…