Skip to content

Instantly share code, notes, and snippets.

@steipete
Created January 31, 2014 17:21
Show Gist options
  • Star 9 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save steipete/8737196 to your computer and use it in GitHub Desktop.
Save steipete/8737196 to your computer and use it in GitHub Desktop.
Getting the first responder... Unless you want to use the private [view firstResponder] this seems to be the only legal way. Or am I wrong?
UIView *PSPDFFindFirstResponderBeneathView(UIView *view) {
// Stop if e.g. we show an UIAlertView with a text field.
if (UIApplication.sharedApplication.keyWindow != view.window) return nil;
// Search recursively for first responder.
for (UIView *childView in view.subviews) {
if ([childView respondsToSelector:@selector(isFirstResponder)] && childView.isFirstResponder) return childView;
UIView *result = PSPDFFindFirstResponderBeneathView(childView);
if (result) return result;
}
return nil;
}
@rubensmachion
Copy link

Hi I would like you my implementation for getting first Responder. Thanks

https://github.com/iottirubin/findFirstResponder

@steipete
Copy link
Author

@iottirubin your method seems a bit wasteful and ignores multiple windows. See the StackOverflow link above for a faster, more generic variant.

@aceontech
Copy link

Hi @steipete,

Just wanted to make sure, the link you provided makes use of the "findFirstResponder" action.. Is this not a private API? I can only find mention of it in Apple's macOS documentation, not iOS.

Thx!
Alex

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment