特别是,能够向第一响应者发送自定义操作,这些操作将冒泡到可能感兴趣的任何其他人:[[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
sendAction:…
的等效方法,它会自动从第一个响应者开始并开始工作。
答案 0 :(得分:1)
通过利用响应者链找到第一个响应者有delightful solution here。
一旦您知道了第一个响应者,就很容易询问当前的响应者链是否处理了特定的操作。如果愿意,你甚至可以找出谁将会处理它。
const SEL action = @selector(theActionYouWantToSend);
UIResponder *const currentTarget = [[UIResponder firstResponder] targetForAction: action withSender: self];
const bool actionIsHandled = currentTarget != nil;
答案 1 :(得分:0)
您可以检查响应者是否可以响应此操作:
[aResponder respondsToSelector:@selector(methodToSend)];
如果可以回复,则会返回YES
。然后你知道称这种方法是安全的