如果我目前没有与该应用程序进行任何交互(未选择任何文本字段等),是否还有第一个响应者对象?在我测试的时候,如果我向响应者链发送消息,那么当前的ViewController.view接收它,但是它的isFirstResponder返回NO。所以我猜其他一些元素仍然是第一响应者?或者始终存在响应者链,但不一定是第一响应者对象?
答案 0 :(得分:3)
您可以找到第一个响应者:
@implementation UIView (FindFirstResponder)
- (UIView *)findFirstResponder
{
if (self.isFirstResponder) {
return self;
}
for (UIView *subView in self.subviews) {
UIView *firstResponder = [subView findFirstResponder];
if (firstResponder != nil) {
return firstResponder;
}
}
return nil;
}
@end
答案 1 :(得分:-1)
答案:
不,一直没有第一响应者。您可以在git上找到例程,从self.view中查看每个子视图,寻找第一个响应者,如果您愿意:
@implementation UIView (FindFirstResponder)
- (UIView *)findFirstResponder
{
if (self.isFirstResponder) {
return self;
}
for (UIView *subView in self.subviews) {
UIView *firstResponder = [subView findFirstResponder];
if (firstResponder != nil) {
return firstResponder;
}
}
return nil;
}
@end
我尝试了这个,有时按预期返回nil。 self.view仍然将消息发送给第一响应者。