ユーザーにボタンを押して、背景色を変えて(黄色に)、WAVを再生し、WAVの完了時にボタンを元の色に戻す)。したがって、サウンドの周りに補完ハンドラがあります。以下のコードをさまざまに組み合わせてみましたが、WAVが再生され、ボタンが色を変えるように見えません。スウィフト - 押しボタン(完了ハンドラーの問題)
これは間違ったアプローチですか、何か間違っていますか?補完ハンドラを色の変化の周りに置く必要はないと思いますが、残念です。
多くのありがとうございます。
typealias CompletionHandler = (success:Bool) -> Void
@IBAction func fireButton(sender: AnyObject) {
playLaser({ (success)-> Void in
if success {
self.shots -= 1
self.labelShotsLeft.text = String(self.shots)
} else {
}
})
}
func playLaser(completionHandler: CompletionHandler) {
fireButton.layer.backgroundColor = UIColor.yellowColor().CGColor
let url = NSBundle.mainBundle().URLForResource("laser", withExtension: "wav")!
do {
player = try AVAudioPlayer(contentsOfURL: url)
guard let player = player else { return }
player.prepareToPlay()
player.play()
} catch let error as NSError {
print(error.description)
}
self.fireButton.layer.backgroundColor = UIColor.redColor().CGColor
completionHandler(success: true)
}