iOS开发presentViewController延迟跳转或者不跳转

最近在做项目,用到了presentViewController:animated:completion方法。刚开始在模拟器上跳转有延迟,如果连续点击两次就可以跳转。然后用真机测试发现又没这种问题,所以我就当做是模拟器有问题了。

但是今天我在手机上点击跳转却发现出现了延迟,大概三四秒才跳转。而且如果在延迟没跳转的时候你再点击屏幕,就会跳转。对于这种情况我就感觉是代码问题了。

首先打印了当前线程是主线程,测试了几次,感觉不是控制器的原因。打印输出都没问题,但就是不跳转,没办法。我就异步开启主线程执行跳转:

EXMSettingsController *settingsController = [[EXMSettingsController alloc] init];
                
                UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:settingsController];
                settingsController.view.backgroundColor = [UIColor colorWithHexString:@"#F0F0F0"];
                
                dispatch_async(dispatch_get_main_queue(), ^{
                    [weakSelf presentViewController:navController animated:YES completion:nil];
                });

这样好像挺好使,先这么用着吧。

后面网上查了下,主动唤起主线程再执行跳转也可以:

[self performSelectorOnMainThread:@selector(presentViewController) withObject:nil waitUntilDone:NO];

然后在presentViewController方法中执行跳转代码。

目前就知道这样解决可行,但是引起这个问题的原因就不得而知了。

如果有知道的欢迎留言补充,谢谢!

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

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,778评论 25 709
  • 读经典,就是和大师对话交流,读不懂没关系,那是因为自己境界不够,只要不断地读,慢慢就懂了。 ——东叔 01 俗话说...
    微语东来阅读 1,581评论 4 17
  • “亲爱的,帮我把早餐带到宿舍楼下” “你就不能下来陪我吃个早餐啊” “我的老婆,你最好了,我最爱你了……” “好了...
    死灰姑娘阅读 241评论 0 0
  • 一个早上都浸在了实验室……(说一个早上,其实也就9点到12点半。7点就醒了但就是死赖在床上我也是很服气)但是做出来...
    白日梦女一号阅读 236评论 0 0