summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/plugins/platforms/ios/qiosglobal.mm22
1 files changed, 21 insertions, 1 deletions
diff --git a/src/plugins/platforms/ios/qiosglobal.mm b/src/plugins/platforms/ios/qiosglobal.mm
index bc16a7997d..71d5a58088 100644
--- a/src/plugins/platforms/ios/qiosglobal.mm
+++ b/src/plugins/platforms/ios/qiosglobal.mm
@@ -152,6 +152,22 @@ int infoPlistValue(NSString* key, int defaultValue)
@implementation QtFirstResponderEvent
@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)
+(id)currentFirstResponder
@@ -164,7 +180,11 @@ int infoPlistValue(NSString* key, int defaultValue)
- (void)qt_findFirstResponder:(id)sender event:(QtFirstResponderEvent *)event
{
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