如何识别哪个文本字段当前是第一响应者

joh*_*ers 5 iphone objective-c uikit ipad ios

如果屏幕上有多个文本字段,并且在点击它们时弹出键盘,如果您想以编程方式隐藏键盘或辞职第一响应者,但您不知道发送resignFirstResponder消息的文本字段,该怎么办?至?有没有办法确定哪个对象/ textField应该收到此消息?

ada*_*ali 7

检查所有文本字段调用

[textfield isFirstResponder]
Run Code Online (Sandbox Code Playgroud)


Mic*_*ann 3

您可以通过将视图控制器设置为所有文本字段的委托对象来跟踪哪个文本字段是第一响应者,然后当您的子类化文本字段获得“ becomeFirstResponder”方法调用时,告诉您的视图控制器哪个文本字段是当前的一个。

或者,有一种更生硬的方法,它是“ UIView”的类别扩展:

@implementation UIView (FindAndResignFirstResponder)
- (BOOL)findAndResignFirstResponder
{
    if (self.isFirstResponder) {
        [self resignFirstResponder];
        return YES;     
    }
    for (UIView *subView in self.subviews) {
        if ([subView findAndResignFirstResponder])
            return YES;
    }
    return NO;
}
@end
Run Code Online (Sandbox Code Playgroud)

这是我从这个可能非常相关的问题中得到的。