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