Tha*_*nks 31 cocoa objective-c nib first-responder
让我简要总结一下:nib文件中的"First Responder"是一个对象,它表示具有用户焦点的UI控件元素.因此,如果用户单击控件,则nib将单击的UI控件设置为First Responder.在我的应用程序中,我可以从笔尖找到"First Responder"的出口,这样我就可以通过点击向用户激活的任何内容发送消息"make red font color".
然后,如果此第一响应者UI控件不理解该消息,则消息将在响应者链中传递,直到父元素或祖父母(等等)UI控件元素理解该消息.否则它将被忽略.
因此,First Responder始终建立具有焦点的UI控件的"链接".是对的吗?
Pet*_*sey 43
正确的整体情况,第一段错误的实施细节.
NibFile中的"第一响应者"是一个对象......
不,实际上,第一响应者是nil.将UI控件(例如,按钮)连接到nib中的First Responder等同[control setTarget:nil]于代码.
nib窗口中First Responder假对象的原因是,在IB中,您同时设置目标和动作(按住Ctrl键拖动到目标,从弹出菜单中选择动作).您无法设置操作并保持目标未设置,就像您可以在代码中一样,因此要将其设置为nil,您需要明确地这样做.这就是First Responder的用途:它是一个伪造的对象nil,因此你可以像设置特定的真实目标一样设置目标和动作.
当然,您不能使用它来设置其他内容nil,只能查看目标.你只能用它来表示First Responder,而不是其他任何东西.
因此,如果用户点击UI控件,Nib会设置...
笔尖没有做任何事情.它只是存储在磁盘上的冻干对象集合.即使你实例化NSNib,你所做的只是解冻一些对象.这是做事的对象.
在手头的情况下,当您取消归档从笔尖连接到First Responder的控件时,其目标设置为nil(记住,这就是First Responder真正的目标:)nil.当控件的目标是nil,并且用户点击它时,它会将其操作发送给当时第一个响应者.
你的第二和第三段是正确的.
| 归档时间: |
|
| 查看次数: |
22148 次 |
| 最近记录: |