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

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

        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 模态视图, 需要点击两次或者需要很长时间)