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

时间:2013-03-24 16:47:23

标签: objective-c protocols uikeyinput

我已经使用委托和数据源等协议进行了大量工作,最近我使用UIKeyInput协议开展了一些工作。 我已经习惯了self.tableView.delegate = self之类的东西,但UIKeyInput我不需要这样做。但是我实现的协议方法(例如insertText:等)仍被调用。

有人可以向我解释这是如何运作的吗?

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:1)

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

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