我正在尝试创建一个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()
    }
}

最佳答案

你挡住了主线,所以你不能按按钮。
尝试将“触发”功能更改为以下内容:

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

10-08 12:25