UIAlertController显示延迟

时间:2016-05-19 22:18:42

标签: swift uikit scenekit uialertcontroller xcode-instruments

我的UIAlert有很多延迟,每当它加载时我必须等待才能点击然后再次完全消失。我查看过建议使用dispatch_async(dispatch_get_main_queue(), {})的其他答案。我试过用这个但无济于事。在我正在制作的场景工具包游戏的渲染循环期间弹出警报(场景只是一个立方体,当我暂停场景时它仍然被延迟)。无论如何都不应该在渲染线程中进行渲染。我查看了时间配置文件日志,看看有什么东西挡住主线程,但我没有看到任何引起我注意的东西(我对这些工具很新)。picture of call tree

以下是我创建警报的代码:

func share(){
    print("share funciton")
    let alert = UIAlertController(title: "Share", message: "Where do you want to share?", preferredStyle: UIAlertControllerStyle.Alert)
    alert.addAction(UIAlertAction(title: "Twitter", style: .Default, handler: {(alert: UIAlertAction!) in
        print("twitter")

        self.showTwitter()
    }))
    self.presentViewController(alert, animated: false, completion: nil)
}

private func showTwitter() {
    if SLComposeViewController.isAvailableForServiceType(SLServiceTypeTwitter) {

        let tweetShare:SLComposeViewController = SLComposeViewController(forServiceType: SLServiceTypeTwitter)

        self.presentViewController(tweetShare, animated: true, completion: nil)

    } else {

        let alert = UIAlertController(title: "Accounts", message: "Please login to a Twitter account to tweet.", preferredStyle: UIAlertControllerStyle.Alert)

        alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil))

        self.presentViewController(alert, animated: true, completion: nil)
    }
}

然后我在使用dispatch_asych的渲染循环中调用share()。我已经在这个bug工作了三天,但不知道是什么导致延迟。

1 个答案:

答案 0 :(得分:1)

尝试关闭慢动画。打开模拟器 - >调试 - >慢动画