繁体   English   中英

UIMenuController和响应者链:怎么回事?

[英]UIMenuController and the responder chain: what's going on?

我在自定义UIView子类上使用UIMenuController。 这意味着它可以成为第一响应者,并声称它可以对“删除”操作执行canPerformAction

我也想这一观点的上海华盈(也是一个自定义的UIView),以便能够使用菜单控制,所以对上海华,我已经将其标记为能够成为第一响应,并实现canPerformAction为不同操作(“复制”和在这种情况下为“剪切”)。

就是这样-当我从(第一个)子视图中显示菜单时,它将所有三个动作置于菜单中:删除,复制和剪切。 在调试器中,我看到在菜单出现之前,两个视图上都调用了canBecomeFirstRespondercanPerformAction

这里发生了什么? 为什么菜单控制器不限于成为第一响应者的视图? 还是我诊断不正确?

谢谢。

您正在使用什么代码?

canPerformAction:withSender:的文档中,

如果响应者类实现了请求的操作,则此方法的此默认实现返回YES,否则,调用下一个响应者。 ...请注意,如果您的类为某个命令返回了“否”,则响应者链中更远的另一个响应者仍可能返回“是”,从而启用该命令。

这似乎是矛盾的,说默认实现递归了响应者链,但是如果返回NO,UIMenuController也递归了响应者链。

最简单的-nextResponder可能是重写-nextResponder以返回nil,但这可能会带来其他副作用(例如,默认情况下,目标为“ nil”的动作会沿着响应者链上!)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM