diff options
author | Justin R. Miller <incanus@codesorcery.net> | 2017-05-02 14:07:57 -0700 |
---|---|---|
committer | Jordan Kiley <jmkiley@users.noreply.github.com> | 2017-05-02 14:07:57 -0700 |
commit | e5ae80ca9648032298eddfc7032c11bc02a3c534 (patch) | |
tree | f2ff2ec806681aa77f388dd2e58a7de5545906d7 /platform/ios/src | |
parent | 5c52401d5504ab4b84d1510042c6b97504c50933 (diff) | |
download | qtlocation-mapboxgl-e5ae80ca9648032298eddfc7032c11bc02a3c534.tar.gz |
[ios] properly show attribution in modal hierarchies (#8837)
fixes #8782
Diffstat (limited to 'platform/ios/src')
-rw-r--r-- | platform/ios/src/MGLMapView.mm | 12 | ||||
-rw-r--r-- | platform/ios/src/UIViewController+MGLAdditions.h | 11 | ||||
-rw-r--r-- | platform/ios/src/UIViewController+MGLAdditions.m | 22 |
3 files changed, 38 insertions, 7 deletions
diff --git a/platform/ios/src/MGLMapView.mm b/platform/ios/src/MGLMapView.mm index 42079baf94..d6f4c1e7fa 100644 --- a/platform/ios/src/MGLMapView.mm +++ b/platform/ios/src/MGLMapView.mm @@ -42,12 +42,13 @@ #import "NSBundle+MGLAdditions.h" #import "NSDate+MGLAdditions.h" -#import "NSString+MGLAdditions.h" -#import "NSProcessInfo+MGLAdditions.h" #import "NSException+MGLAdditions.h" +#import "NSPredicate+MGLAdditions.h" +#import "NSProcessInfo+MGLAdditions.h" +#import "NSString+MGLAdditions.h" #import "NSURL+MGLAdditions.h" #import "UIImage+MGLAdditions.h" -#import "NSPredicate+MGLAdditions.h" +#import "UIViewController+MGLAdditions.h" #import "MGLFaux3DUserLocationAnnotationView.h" #import "MGLUserLocationAnnotationView.h" @@ -1946,10 +1947,7 @@ public: attributionController.popoverPresentationController.sourceView = self; attributionController.popoverPresentationController.sourceRect = self.attributionButton.frame; - UIViewController *viewController = self.window.rootViewController; - if ([viewController isKindOfClass:[UINavigationController class]]) { - viewController = [(UINavigationController *)viewController viewControllers].firstObject; - } + UIViewController *viewController = [self.window.rootViewController mgl_topMostViewController]; [viewController presentViewController:attributionController animated:YES completion:NULL]; diff --git a/platform/ios/src/UIViewController+MGLAdditions.h b/platform/ios/src/UIViewController+MGLAdditions.h new file mode 100644 index 0000000000..b60375a6f6 --- /dev/null +++ b/platform/ios/src/UIViewController+MGLAdditions.h @@ -0,0 +1,11 @@ +#import <UIKit/UIKit.h> + +NS_ASSUME_NONNULL_BEGIN + +@interface UIViewController (MGLAdditions) + +@property (readonly) UIViewController *mgl_topMostViewController; + +@end + +NS_ASSUME_NONNULL_END diff --git a/platform/ios/src/UIViewController+MGLAdditions.m b/platform/ios/src/UIViewController+MGLAdditions.m new file mode 100644 index 0000000000..746fdd8db8 --- /dev/null +++ b/platform/ios/src/UIViewController+MGLAdditions.m @@ -0,0 +1,22 @@ +#import "UIViewController+MGLAdditions.h" + +@implementation UIViewController (MGLAdditions) + +- (UIViewController *)mgl_topMostViewController +{ + if ([self isKindOfClass:[UINavigationController class]]) + { + return [[(UINavigationController *)self visibleViewController] mgl_topMostViewController]; + } + else if ([self isKindOfClass:[UITabBarController class]]) + { + return [[(UITabBarController *)self selectedViewController] mgl_topMostViewController]; + } + else if (self.presentedViewController) + { + return [self.presentedViewController mgl_topMostViewController]; + } + return self; +} + +@end |