美文网首页iOS 功能类
IQKeyboardManager 在iOS11下引起电池栏透明

IQKeyboardManager 在iOS11下引起电池栏透明

作者: 墨香茉香 | 来源:发表于2018-05-03 14:59 被阅读354次

    IQKeyboardManager 在iOS11系统下使得导航栏的背景颜色无法渗透电池栏而出现分节。且导致表格内容区上移等问题。如下图:

    问题原因:IQKeyboardManager 在获取当前顶层控制器的时候获取到了tabBarController 。


    解决方案:找到IQKeyboardManager框架中IQUIView+Hierarchy.m文件修改-(UIViewController*)topMostController 方法中的代码。实现如下:

    -(UIViewController*)topMostController{

        UIViewController  *rootController = [UIApplication  sharedApplication].keyWindow.rootViewController;

        if([rootController isKindOfClass:[UITabBarController class]]){

            UITabBarController *tabBarController = (UITabBarController*)rootController;

            UINavigationController*navController = tabBarController.selectedViewController;

            UIViewController*viewController = (UIViewController*)navController.visibleViewController;

            while(viewController.presentedViewController) {

                viewController = (UIViewController*)viewController.presentedViewController;

            }

            return  viewController;

        }else if([rootController isKindOfClass:[UINavigationController class]]) {

            UINavigationController *navController = (UINavigationController*)rootController;

            return navController.visibleViewController;

        }else if([rootController isKindOfClass:[UIViewController class]]) {

            return rootController;

        }  else{

            return nil;

        }

    }


    相关文章

      网友评论

      本文标题:IQKeyboardManager 在iOS11下引起电池栏透明

      本文链接:https://www.haomeiwen.com/subject/kvokrftx.html