The responder chain is cool

特别是,能够向第一响应者发送自定义操作,这些操作会冒泡给其他可能感兴趣的人: [[UIApplication sharedApplication] sendAction: @selector(commandToSend) to: nil from: self forEvent: nil]

或更少的自定义操作:

[[UIApplication sharedApplication] sendAction: @selector(resignFirstResponder) to: nil from: self forEvent: nil]

我想知道 - 有没有办法在 之前测试 如果来自特定发件人的特定操作将被处理 如果现在发送 ?一个明显的用途是启用和禁用发送 Action 的按钮,这取决于该 Action 是否将在此刻被处理。

如果您碰巧认识第一响应者,我认为您可以执行 [aResponder targetForAction: @selector(methodYouWantToSend) withSender: selfOrSomethingElse] ,并检查答案是否为零。但是似乎没有与 UIApplicationsendAction:… 等效的方法可以在第一响应者处自动启动并开始工作。

最佳答案

通过利用响应者链找到第一响应者有一个 delightful solution here

一旦您知道第一响应者,就很容易询问当前响应者链是否处理特定操作。如果您愿意,您甚至可以找出谁将处理它。

const SEL action = @selector(theActionYouWantToSend);
UIResponder *const currentTarget = [[UIResponder firstResponder] targetForAction: action  withSender: self];
const bool actionIsHandled = currentTarget != nil;

关于ios - 确定响应者链是否将处理一个 Action ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27863940/

10-09 02:20