UIApplicationRotationFollowingController问题

这里记录一个关于UIApplicationRotationFollowingController的问题。

问题现象:

在MainController的UIActionSheet中选中某一项弹出验证码输入框,需要在弹框时判断当前页面是否为MainController,一般我们会这样判断:
UINavigationController* rootNav = [UIApplication sharedApplication].keyWindow. rootViewController; //判断当前页面是否为MainController if ([rootNav.visibleViewController isKindOfClass:[MainController class]]) { //展示验证码输入框 }
当重复选择UIActionSheet弹出验证码输入框时,有可能出现崩溃。

问题分析:

查看崩溃信息,发现是因为,崩溃信息UIApplicationRotationFollowingController没有visibleViewController属性导致。
所以,需要解决两个问题:
1、为什么出现UIApplicationRotationFollowingController;
答:因为UIActionSheet是在新建的window上展示的,所以keyWindow已经改变了,无法通过[UIApplication sharedApplication].keyWindow获取rootViewController。
2、MainController应该是UINavigationController类型的。

问题解决:

这里给出我遇到此类问题的应对措施,如果不全面,欢迎分享:
1、首先,获取rootViewController方式应该为:
UINavigationController* rootNav = [UIApplication sharedApplication].delegate.window.rootViewController;
2、然后,要确保MainController是UINavigationController类型的,这样先解决了程序崩溃的问题。
//判断当前页面是否为MainController if ([rootNav isKindOfClass:NSClassFromString(@"UINavigationController")] && [rootNav.visibleViewController isKindOfClass:[MainController class]]) { //展示验证码输入框 }

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

推荐阅读更多精彩内容

  • 1、禁止手机睡眠[UIApplication sharedApplication].idleTimerDisabl...
    DingGa阅读 4,813评论 1 6
  • 一、问题背景 最近需求量放缓,想起了以前曾经later的小需求,也就是弹出来的AlertView中间的文本框输入一...
    唐笛_Dylan阅读 18,638评论 6 29
  • *7月8日上午 N:Block :跟一个函数块差不多,会对里面所有的内容的引用计数+1,想要解决就用__block...
    炙冰阅读 7,330评论 1 14
  • 之前一直以为青春期是有迷茫的,但工作后,发现工作期的迷茫更严重。停在一个十字路口,不知道该往哪儿走,每天上着一样的...
    一个心理咨询师阅读 5,374评论 0 0
  • 人的天性都是爱八卦的,因此,故事,基本没有不喜欢的。 相比一个晦涩的道理,一个好故事更容易影响别人。 对于孩子来说...
    海星_love阅读 984评论 1 1