2017-04-15 8 views
0

J'ai un AVAudioPlayer dans mon application et j'ajoute une fonction où l'utilisateur peut appuyer sur le bouton Lecture/Pause de la télécommande pour lire/mettre en pause l'AVAudioPlayer. J'ai ce code dans mon App Delegate:Ajouter une action à l'Apple TV Bouton lecture/pause à distance

func initializePlayButtonRecognition() { 
     addPlayButtonRecognizer(#selector(AppDelegate.handlePlayButton(_:))) 
    } 

    func addPlayButtonRecognizer(_ selector: Selector) { 
     let playButtonRecognizer = UITapGestureRecognizer(target: self, action:selector) 
     playButtonRecognizer.allowedPressTypes = [NSNumber(value: UIPressType.playPause.rawValue as Int)] 
     self.window?.addGestureRecognizer(playButtonRecognizer) 

    } 

    func handlePlayButton(_ sender: AnyObject) { 
     if audioPlayer.isPlaying { 
      audioPlayer.pause() { 
      } else { 
       audioPlayer.play() 
      } 

    } 

} 

Le nom de l'AVAudioPlayer est audioPlayer. Je l'ai indiqué dans le code, mais le délégué de l'application n'a pas de référence à AVAudioPlayer à partir de PlayerViewController. Comment puis-je faire cela?

Répondre

0

Votre code semble correct. Juste un détail manquant qui pourrait expliquer pourquoi il ne fonctionne pas comme prévu ... dans tvOS, en dehors de la mise en allowedPressTypes il est également nécessaire de définir allowedTouchTypes comme indirecte:

playButtonRecognizer.allowedTouchTypes = [NSNumber(value: UITouchType.indirect.rawValue)] 
+0

Merci, mais je l'ai déjà ajouté. Le problème est que le délégué de l'application ne sait pas ce que "AudioPlayer" est "l'utilisation de l'identificateur non résolu 'audioPlayer" – iFunnyVlogger