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

    这是个神奇的问题, 具体表现为模态跳转的代码需要触发两次或者需要很长时间, 才能页面切换才能成功. 也许有一些不注...

  • 【转载】iOS 模态视图

    iOS 模态视图 概念: ios开发中,在当前视图上再弹出一个视图(模态视图)例如登陆视图,分享视图,注册等等。 ...

  • 自定义 protocol 示例

    当你在 A 页面点击按钮,弹出模态视图 B ,在模态视图上用户输入信息后,我们怎样才能把数据从模态视图 B 页面传...

  • iOS开发 定时器方法---NSTimer、CADisplayL

    iOS开发,常常需要我们在某个时间刷新视图,或者请求数据。这时,我们需要使用定时器。iOS中的定时方法很多,这里有...

  • HBTableView

    TableView 的点击响应问题 需要把各种响应写成一个标准的类,设定参数,然后组合调用 检验是否为空 模态视图...

  • iOS 模态出一个半透明的ViewController

    最近项目有需求, 需要模态初一个半透明的视图, 好多人都碰到这个问题吧, 在目标视图中设置背景颜色然后发现模态动作...

  • iOS 模态出一个半透明的ViewController pres

    最近项目有需求, 需要模态初一个半透明的视图, 好多人都碰到这个问题吧, 在目标视图中设置背景颜色然后发现模态动作...

  • iOS 屏幕旋转

    每个视图控制器都控制着自己的旋转方向,如果需要新的旋转权限需要模态出新的视图控制器(如navigation tab...

  • 屏幕旋转

    每个视图控制器都控制着自己的旋转方向,如果需要新的旋转权限需要模态出新的视图控制器(如navigation tab...

  • present 半透明ViewController

    最近项目有需求, 需要模态初一个半透明的视图,就像抖音APP的登录注册一样, 在目标视图中设置背景颜色然后发现模态...

网友评论

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

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