2016-03-24 13 views
0

Ich versuche eine iOS-auslösende App zu erstellen, die ein Signal sendet, wenn sie ausgelöst wird, wenn die App aktiviert ist. Ich habe das Signal erzeugt, das gesendet werden soll, wenn es ausgelöst wird und einen Knopf, der die App von bewaffnet auf unbewaffnet ändert.While Loop- und Touch-Ereignisse schnell iOS

Wenn ich den Knopf berühre, der die App scharf macht, geht es in eine While-Schleife, die lauscht, um zu sehen, ob die App ausgelöst wurde und sendet das Signal, wenn sie ausgelöst wird. Dadurch kann ich jedoch den Knopf nicht berühren, der jetzt sagt, die App zu entschärfen. Dies ist, was ich bisher habe:

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() 
    } 
} 

Antwort

1

Sie blockieren Hauptgewinde, deshalb können Sie den Knopf nicht berühren. Versuchen Sie, Ihre "Trigger" -Funktion in etwa wie folgt zu ändern:

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