【问题标题】:While Loop and Touch Events Swift iOSWhile 循环和触摸事件 Swift iOS
【发布时间】:2016-03-24 14:26:16
【问题描述】:

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

【问题讨论】:

    标签: ios swift multithreading while-loop


    【解决方案1】:

    您正在阻塞主线程,这就是您无法触摸按钮的原因。 尝试将您的“触发”功能更改为以下内容:

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

    【讨论】:

      猜你喜欢
      • 2011-05-16
      • 2015-02-06
      • 1970-01-01
      • 2021-10-27
      • 1970-01-01
      • 1970-01-01
      • 2011-10-03
      • 2013-04-16
      • 1970-01-01
      相关资源
      最近更新 更多