最后,我用这个函数解决了这个问题,它递归地遍历子视图并记录它们是否是第一响应者。
- (void) logResponderInfo: (UIView *)view
{
NSLog(@"%@ %@", NSStringFromClass(view.class), view.isFirstResponder ? @"yes" : @"no");
for (UIView *sub in view.subviews) {
[self logResponderInfo:sub];
}
}
我从我的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。