Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
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;

This comment has been minimized.

Copy link

@rubensmachion rubensmachion commented Sep 22, 2015

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


This comment has been minimized.

Copy link
Owner Author

@steipete steipete commented Jun 21, 2016

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


This comment has been minimized.

Copy link

@aceontech aceontech commented Sep 19, 2017

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.


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