美文网首页
iOS 模态视图, 需要点击两次或者需要很长时间

iOS 模态视图, 需要点击两次或者需要很长时间

作者: 烟影很美 | 来源:发表于2019-08-22 16:01 被阅读0次

    这是个神奇的问题, 具体表现为模态跳转的代码需要触发两次或者需要很长时间, 才能页面切换才能成功. 也许有一些不注意的地方触发了这种状况, 但这都不是开发者的错. 发生这样错误的代码可能是这样的:

            let vc = UIViewController.init()
            vc.modalPresentationStyle = .overFullScreen
            vc.modalTransitionStyle = .crossDissolve
            self.present(vc, animated: true, completion: nil)
    

    也许是modalTransitionStyle的设置触发的吧

    解决办法:

           self.present(vc, animated: true, completion: nil)
           CFRunLoopWakeUp(CFRunLoopGetCurrent());
    

    这个办法是可行有效的. 出现这个问题的底层原理是因为这个时候runloop沉睡了, 第二次点击/摇动/手机倾斜等都会唤醒'runloop', 或者等到'runloop'自己醒来继续工作.

    至于为什么沉睡, 苹果到底在模态视图装换背后做了什么, 那就不得而知了.

    解决办法有很多种, 只要能够唤醒runloop就可以
    参考: presentViewController:animated:YES view will not appear until user taps again

    相关文章

      网友评论

          本文标题:iOS 模态视图, 需要点击两次或者需要很长时间

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