2016-03-24 56 views
0

我試圖創建一個iOS觸發應用程序,如果在應用程序設防時觸發,則會發送一個信號。我已經產生了觸發時發送的信號和一個將應用程序從武裝改爲非武裝的按鈕。雖然循環和觸摸事件迅速iOS

當我觸摸使應用程序佈防的按鈕時,它會進入一個while循環,該循環運行偵聽以查看應用程序是否已觸發並在觸發時發送信號。但是,通過這樣做,我無法觸摸現在說的解除應用程序解除武裝的按鈕。這是我到目前爲止有:

var trigger = AVAudioPlayer() 
func playMySound(){ 
    let triggerSoundURL = NSBundle.mainBundle().URLForResource("trigger", withExtension: "wav")! 
    trigger = try! AVAudioPlayer(contentsOfURL: triggerSoundURL) 
    trigger.prepareToPlay() 
    trigger.play() 
} 

var armed = 0 
@IBAction func arm() { 
    if(armed==0){ 
     armed=1 
     armButton.setTitle("Armed", forState: .Normal) 
     triggering(); 
    } 
    else{ 
     armed=0 
     armButton.setTitle("Arm", forState: .Normal) 
    } 
} 

func triggering() -> Void { 
    while(armed==1){ 
     playMySound() 
     arm() 
    } 
} 

回答

1

您阻止主線,這就是爲什麼你不能老是觸摸按鈕。 嘗試將您的「觸發」功能更改爲如下所示:

func triggering() -> Void { 
    dipsatch_async(dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0)){ 
     while(armed==1){ 
      playMySound() 
      arm() 
     } 
    } 
}