我在代理和数据源等协议上工作过很多,最近我使用UIKeyInput
协议进行了一些工作。 我习惯于像self.tableView.delegate = self
这样的东西,但用UIKeyInput
我不需要那样。但是我实现的协议方法(例如insertText:
等)却被调用了。为什么某个协议工作时没有实现它的类?
有人可以向我解释这是如何工作的?
非常感谢您的帮助!
我在代理和数据源等协议上工作过很多,最近我使用UIKeyInput
协议进行了一些工作。 我习惯于像self.tableView.delegate = self
这样的东西,但用UIKeyInput
我不需要那样。但是我实现的协议方法(例如insertText:
等)却被调用了。为什么某个协议工作时没有实现它的类?
有人可以向我解释这是如何工作的?
非常感谢您的帮助!
Cocoa Touch框架有一个“响应者链”的概念,它是如何计算出输入UI输入事件的位置的。 “第一响应者”是响应者链条的负责人。当iOS有一个键盘输入事件时,它会检查当前的第一响应者是否支持UIKeyInput协议,如果有,则调用这些方法。
您不需要为另一个对象注册UIKeyInputDelegate,因为框架将这些消息的收件人定义为第一个响应者。
完全合理!非常感谢 :) – Dario 2013-03-24 17:03:15
你在哪个类实现了'UIKeyInput'? – driis 2013-03-24 16:49:00
“UIView”的自定义子类 – Dario 2013-03-24 16:49:50
它以某种方式处理了你的自我。也许在右舷/ zib? – danh 2013-03-24 16:50:22