UIAlertView无法在正确的时间显示

时间:2015-04-03 15:02:13

标签: ios iphone swift

我在点击功能的简单视图中有一个按钮:

@IBAction func watchAlert(sender: AnyObject) {
    showAlert()
    for i in 1...2{
    AudioServicesPlaySystemSound (1005);
    sleep(2)
    }

}

func showAlert(){
    var alert = UIAlertController(title: "Alert", message: "Message", preferredStyle: UIAlertControllerStyle.Alert)
    self.presentViewController(alert, animated: true, completion: nil)
    alert.addAction(UIAlertAction(title: "Ok", style: .Default, handler: dismissAlert ))

}


func dismissAlert(alertView: UIAlertAction!)
{
    println("User click ok button")
}

即使我在播放音频之前尝试调用showAlert(),我也只能在声音播放后才能看到警报。我希望警报首先出现,然后发出声音。 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:3)

取出sleep命令(你必须从不 sleep主线程 - 看门狗进程会杀死你,此外,你错误地冻结了整个界面)。相反:显示提醒,然后使用延迟的效果(如在我的delay实用程序here中)播放声音。

(您的代码还有其他问题;特别是,您还需要找到一种新方法来播放声音两次,因为您不能使用sleep;这也可以使用{来完成{1}} - 嵌套。)