仅从UITextView观察键盘通知?将 UITextView 传递给"object"参数不起作用



假设一个视图控制器包含一个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。对象是发送者,它不是显示键盘和发送通知的字段——它是应用程序。

你想问的问题可能是谁是第一响应者…

最新更新