Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 为什么某个协议在没有实现它的类的情况下工作?_Objective C_Protocols_Uikeyinput - Fatal编程技术网

Objective c 为什么某个协议在没有实现它的类的情况下工作?

Objective c 为什么某个协议在没有实现它的类的情况下工作?,objective-c,protocols,uikeyinput,Objective C,Protocols,Uikeyinput,我在代理和数据源等协议方面做了很多工作,最近我使用uikeyinport协议做了一些工作。 我已经习惯了类似于self.tableView.delegate=self的事情,但是使用uikeyinport我不需要这样做。但是我实现的协议方法(例如,insertText:等)仍然被调用 有人能给我解释一下这是怎么回事吗 非常感谢你的帮助 Cocoa Touch框架有一个“响应者链”的概念,即它如何确定在何处交付UI输入事件。“第一响应者”位于响应者链的顶端。当iOS有键盘输入事件时,它会检查当前第

我在代理和数据源等协议方面做了很多工作,最近我使用
uikeyinport
协议做了一些工作。 我已经习惯了类似于
self.tableView.delegate=self
的事情,但是使用
uikeyinport
我不需要这样做。但是我实现的协议方法(例如,
insertText:
等)仍然被调用

有人能给我解释一下这是怎么回事吗


非常感谢你的帮助

Cocoa Touch框架有一个“响应者链”的概念,即它如何确定在何处交付UI输入事件。“第一响应者”位于响应者链的顶端。当iOS有键盘输入事件时,它会检查当前第一响应程序是否支持UIKeyInput协议,如果支持,则调用这些方法


您不需要注册为另一个对象的UIKeyInputDelegate,因为框架将这些消息的接收者定义为第一响应者。

您在哪个类上实现了
UIKeyInput
?UIView的自定义子类
UIView
它以某种方式获得了您自己的句柄。可能是在右舷/齐布?这些都不涉及…完全有道理!非常感谢:)