iOS Find the current first responder

Quite often you need to know which control is currently the first responder, for ages i have been rolling the same solution over and over again and I thought it about time that i shared it.

Its basically a category on UIView so you can call:

[self.view findFirstResponder];

Imagine you wanted to make sure the keyboard (or any other editor view) was closed you could:

UIView *firstResponder = [self.view findFirstResponder];
[firstResponder resignFirstResponder];

The code is stupid simple:

UIView+AblebotsAdditions.h

#import 
 
@interface UIView (Ablebots)
 
- (UIView *)findFirstResponder;
 
@end

UIView+AblebotsAdditions.m

#import "UIView+AblebotsAdditions.h"
@implementation UIView (Ablebots)
 
- (UIView *)findFirstResponder
{
    if (self.isFirstResponder) {
        return self;
    }
    for (UIView *subView in self.subviews) {
        if ([subView isFirstResponder]){
            return subView;
        }
        if ([subView findFirstResponder]){
            return [subView findFirstResponder];
        }
    }
    return nil;
}
 
@end

Leave a comment