![](/img/trans.png)
[英]What's the trick to pass an event to the next responder in the responder chain?
[英]UIMenuController and the responder chain: what's going on?
我在自定义UIView子类上使用UIMenuController。 这意味着它可以成为第一响应者,并声称它可以对“删除”操作执行canPerformAction
。
我也想这一观点的上海华盈(也是一个自定义的UIView),以便能够使用菜单控制,所以对上海华,我已经将其标记为能够成为第一响应,并实现canPerformAction
为不同操作(“复制”和在这种情况下为“剪切”)。
就是这样-当我从(第一个)子视图中显示菜单时,它将所有三个动作置于菜单中:删除,复制和剪切。 在调试器中,我看到在菜单出现之前,两个视图上都调用了canBecomeFirstResponder
和canPerformAction
。
这里发生了什么? 为什么菜单控制器不限于成为第一响应者的视图? 还是我诊断不正确?
谢谢。
您正在使用什么代码?
在canPerformAction:withSender:的文档中,
如果响应者类实现了请求的操作,则此方法的此默认实现返回YES,否则,调用下一个响应者。 ...请注意,如果您的类为某个命令返回了“否”,则响应者链中更远的另一个响应者仍可能返回“是”,从而启用该命令。
这似乎是矛盾的,说默认实现递归了响应者链,但是如果返回NO,UIMenuController也递归了响应者链。
最简单的-nextResponder
可能是重写-nextResponder
以返回nil,但这可能会带来其他副作用(例如,默认情况下,目标为“ nil”的动作会沿着响应者链上!)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.