diff options
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 540f6de861..4b5ca8679a 100644 --- a/platform/ios/src/MGLMapView.mm +++ b/platform/ios/src/MGLMapView.mm @@ -40,12 +40,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" @@ -1917,10 +1918,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 |