为啥某个协议在没有实现它的类的情况下工作?
Posted
技术标签:
【中文标题】为啥某个协议在没有实现它的类的情况下工作?【英文标题】:Why does a certain Protocol work without a class that implements it?为什么某个协议在没有实现它的类的情况下工作? 【发布时间】:2013-03-24 16:47:23 【问题描述】:我在委托和数据源等协议方面做了很多工作,最近我使用UIKeyInput
协议进行了一些工作。
我已经习惯了self.tableView.delegate = self
这样的事情,但是UIKeyInput
我不需要那样做。但是我实现的协议方法(例如insertText:
等)仍然被调用。
有人可以向我解释这是如何工作的吗?
非常感谢您的帮助!
【问题讨论】:
你在哪个类上实现了UIKeyInput
?
UIView
的自定义子类
它以某种方式控制了你的自我。也许在右舷/zib?
不涉及...
【参考方案1】:
Cocoa Touch 框架有一个“响应者链”的概念,这就是它如何确定在哪里传递 UI 输入事件。 “第一响应者”位于响应者链的头部。当 ios 有键盘输入事件时,它会检查当前的第一响应者是否支持 UIKeyInput 协议,如果支持则调用这些方法。
您不需要为另一个对象注册为 UIKeyInputDelegate,因为框架将这些消息的接收者定义为第一响应者。
【讨论】:
完全有道理!非常感谢:)以上是关于为啥某个协议在没有实现它的类的情况下工作?的主要内容,如果未能解决你的问题,请参考以下文章