如何find返回YES的响应者canPerformAction:withSender:

我需要从UIWebView的编辑菜单中禁用定义菜单项。 这应该是通过执行canPerformAction:withSender:并返回NO来禁用项目。 即使这些是私人物品,我似乎应该能够返回是我想要保留的项目和NO的一切(如在这个问题 )。

但是这不起作用。 文件说这个

如果响应者链中没有响应者返回YES,则菜单命令被禁用。 请注意,如果你的类返回一个命令NO,另一个响应者链上的响应者可能仍然返回YES,启用该命令。

看来这一定是这个不行的原因。 我如何find哪个响应者返回YES?

最后,我想到了这个function,recursion地通过子视图,并logging他们是否是第一响应者。

 - (void) logResponderInfo: (UIView *)view { NSLog(@"%@ %@", NSStringFromClass(view.class), view.isFirstResponder ? @"yes" : @"no"); for (UIView *sub in view.subviews) { [self logResponderInfo:sub]; } } 

我从我的canPerformAction:withSender:调用canPerformAction:withSender:函数

 [self logResponderInfo:self.webView]; 

这写到日志

 2013-11-18 11:35:56.100 Testing[44593:a0b] CDVCordovaView no 2013-11-18 11:35:56.100 Testing[44593:a0b] _UIWebViewScrollView no 2013-11-18 11:35:56.101 Testing[44593:a0b] UIWebBrowserView yes 2013-11-18 11:35:56.101 Testing[44593:a0b] UITextSelectionView no 2013-11-18 11:35:56.102 Testing[44593:a0b] UIView no 2013-11-18 11:35:56.102 Testing[44593:a0b] UIImageView no 2013-11-18 11:35:56.103 Testing[44593:a0b] UIImageView no 2013-11-18 11:35:56.103 Testing[44593:a0b] UIActivityIndicatorView no 2013-11-18 11:35:56.104 Testing[44593:a0b] UIImageView no 

这告诉我第一个响应者实际上是UIWebBrowserView。