2015-04-03 64 views
0

越来越显示我有一个简单的视图按钮上点击功能:UIAlertView中没有在合适的时间

@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(),我只能看到只有在播放声音后才会显示警报。我希望警报首先出现,然后声音应该播放。 任何帮助表示赞赏。

回答

3

取出sleep命令(必须从未sleep主线程 - 看门狗过程会杀了你死了,而且,你被错误冻结了整个界面)。相反:显示警报,然后使用延迟的性能(如我的delay实用程序here)播放声音。

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

+0

这看起来不错!但我有一个问题,在这种使用延迟的情况下(即杀死所有其他音色),我该如何去解决音乐问题。 – 2015-04-03 17:08:21