【问题标题】:Operations After UIAlert is dismissed causes dealays解除警报后的操作导致延迟
【发布时间】:2016-03-19 12:59:14
【问题描述】:

我目前正在为我的应用程序制作注册表单。一旦用户点击注册按钮,就会向用户发出警报以确认号码并继续。

警报截图:

如果用户点击取消,我会执行以下操作:

/*** Reset Mobile Number Input ***/
                        self.flagMobileNumber = 0
                        self.validatorIconMobileNumber.setImage(nil, forState: UIControlState.Normal)
                        self.mobileNumberInput.text = ""
                        self.mobileNumberInput.becomeFirstResponder()

                    /*** Disable Register Button ***/
                        self.registerButton.alpha = 0.5
                        self.registerButton.userInteractionEnabled = false

但是在所有操作完成之前会出现相当长的延迟。

请有人解释为什么会发生这种情况以及可以采取哪些措施来防止这种情况发生。

【问题讨论】:

  • 什么是“相当大的延迟”? 0.5 秒? 5秒?您还没有向我们展示您完整的警报委托方法,您确定延迟是由您发布的代码引起的吗?如果是这样,为什么?提示:尝试在战略点添加一些NSLog 调用,它们会打印当前时间,以便您查看花费最多的时间。

标签: ios swift uialertview


【解决方案1】:

您可能不在主线程上,不鼓励在不同的线程(除了主线程)上做 UI 工作,而且通常需要时间。

尝试在主线程上做你的 UI 工作:

dispatch_async(dispatch_get_main_queue(), ^{
// do UI stuff here
});

【讨论】:

    猜你喜欢
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    • 2013-02-22
    相关资源
    最近更新 更多