2020-04-23

/*

 获取顶层控制器的三种方案(兼容iOS 13)

 第1种和第2种方案有可能返回的是UITextEffectsWindow下的UIInputWindowController

 所以推荐使用第3种方案

 */

- (UIViewController *)getTopViewController1{

    __blockUIViewController*topVC =nil;

    if(@available(iOS13, *)) {

        NSSet *windowScenes = [UIApplication sharedApplication].connectedScenes;

        [windowScenesenumerateObjectsUsingBlock:^(UIWindowScene*windowScene,BOOL*_Nonnullstop) {

            if (windowScene.activationState == UISceneActivationStateForegroundActive)

            {

                topVC = windowScene.windows.lastObject.rootViewController;

                *stop =YES;

            }

        }];

    }else{

        topVC = [UIApplication sharedApplication].keyWindow.rootViewController;

    }

    while (topVC.presentedViewController) {

        topVC = topVC.presentedViewController;

    }

    returntopVC;

}

- (UIViewController *)getTopViewController2{

    UIViewController *appRootVC = [UIApplication sharedApplication].windows.lastObject.rootViewController;

    UIViewController*topVC = appRootVC;

    while (topVC.presentedViewController) {

        topVC = topVC.presentedViewController;

    }

    returntopVC;

}

- (UIViewController *)getTopViewController3{

    NSArray *windows = [UIApplication sharedApplication].windows;

    __blockUIViewController*topVC =nil;

    [windowsenumerateObjectsUsingBlock:^(UIWindow*window,NSUIntegeridx,BOOL*_Nonnullstop) {

        if([windowisKeyWindow]) {

            topVC = window.rootViewController;

            *stop =YES;

        }

    }];

    while (topVC.presentedViewController) {

        topVC = topVC.presentedViewController;

    }

    returntopVC;

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容