响应者链很酷 http://www.cocoanetics.com/2012/09/the-amazing-responder-chain/.
特别是,能够将自定义操作发送给第一响应者,这些操作将冒泡给其他可能感兴趣的人:[[UIApplication sharedApplication] sendAction: @selector(commandToSend) to: nil from: self forEvent: nil]
.
或者减少自定义操作:
[[UIApplication sharedApplication] sendAction: @selector(resignFirstResponder) to: nil from: self forEvent: nil]
我想知道 – 有没有办法测试事前是否处理来自特定发件人的特定操作如果现在发送?一个明显的用途是启用和禁用发送操作的按钮,具体取决于当前是否要处理该操作。
如果你碰巧认识第一反应者,我想你可以做[aResponder targetForAction: @selector(methodYouWantToSend) withSender: selfOrSomethingElse]
,并检查答案是否为零。但似乎没有等效的方法UIApplication
's sendAction:…
这将在第一响应者处自动启动并开始工作。
有一个这里是令人愉快的解决方案 https://stackoverflow.com/a/21330810/2547229通过利用响应者链找到第一响应者。
一旦您知道了第一响应者,就可以轻松询问当前响应者链是否处理特定操作。如果您愿意,您甚至可以找出谁来处理它。
const SEL action = @selector(theActionYouWantToSend);
UIResponder *const currentTarget = [[UIResponder firstResponder] targetForAction: action withSender: self];
const bool actionIsHandled = currentTarget != nil;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)