Commit c4329607 authored by Tor Arne Vestbø's avatar Tor Arne Vestbø
Browse files

iOS: Be more thorough when looking for current first responder


The technique of sending an action does not always end up at the actual
first responder, but it will end up in a responder in the responder
chain of the first responder, so we continue searching the subviews
recursively until we find the real first-responder.

Change-Id: I6abc9bc18eb127fa4b317cd308783c0ecfcd670a
Reviewed-by: default avatarRichard Moe Gustavsen <richard.gustavsen@digia.com>
Reviewed-by: default avatarTor Arne Vestbø <tor.arne.vestbo@digia.com>
parent d563f614
No related merge requests found
Showing with 21 additions and 1 deletion
...@@ -152,6 +152,22 @@ int infoPlistValue(NSString* key, int defaultValue) ...@@ -152,6 +152,22 @@ int infoPlistValue(NSString* key, int defaultValue)
@implementation QtFirstResponderEvent @implementation QtFirstResponderEvent
@end @end
@implementation UIView (QtFirstResponder)
- (UIView*)qt_findFirstResponder
{
if ([self isFirstResponder])
return self;
for (UIView *subview in self.subviews) {
if (UIView *firstResponder = [subview qt_findFirstResponder])
return firstResponder;
}
return nil;
}
@end
@implementation UIResponder (QtFirstResponder) @implementation UIResponder (QtFirstResponder)
+(id)currentFirstResponder +(id)currentFirstResponder
...@@ -164,7 +180,11 @@ int infoPlistValue(NSString* key, int defaultValue) ...@@ -164,7 +180,11 @@ int infoPlistValue(NSString* key, int defaultValue)
- (void)qt_findFirstResponder:(id)sender event:(QtFirstResponderEvent *)event - (void)qt_findFirstResponder:(id)sender event:(QtFirstResponderEvent *)event
{ {
Q_UNUSED(sender); Q_UNUSED(sender);
event.firstResponder = self;
if ([self isKindOfClass:[UIView class]])
event.firstResponder = [static_cast<UIView *>(self) qt_findFirstResponder];
else
event.firstResponder = [self isFirstResponder] ? self : nil;
} }
@end @end
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment