2016-04-04 7 views
2

Ich spiele YouTube-Videos in meiner App und versuche zu erkennen, wann ein Video pausiert oder beendet wurde. Ich habe die kYTPlayerState-Funktion in der .m-Datei gefunden, aber Probleme beim Konvertieren von Swift. Hier ist, was ich habe ....Wie erkennt man YTPlayerState.Ended mit Swift?

func playerView(playerView: YTPlayerView!, didChangeToState state: YTPlayerState) 
{ 
    switch (state) { 
    case YTPlayerState.Playing: 
     print("Started playback"); 
     break; 
    case YTPlayerState.Paused: 
     print("Paused playback"); 
     break; 
    case YTPlayerState.Ended: 
     print("Ended playback"); 
     break; 
    default: 
     break; 
    } 
} 

und .....

if playerView(player , didChangeToState: YTPlayerState.Ended) 
    { 
     /// Do Something.... 
    } 

.... was ich Platz in ViewDidLoad(). Ich bekomme auch den Fehler auf meiner if-Anweisung zurück, die Type "()" does not conform to protocol "Boolean Type" sagt. Wenn Sie wissen, wie Sie das beheben können, oder wenn ich etwas verlasse, helfen Sie bitte.

ich in dieser Ansicht die Spieler bin Initialisierung mit @IBOutlet var player: YTPlayerView!

+0

Hey Charles hat meine Antwort Ihnen geholfen? Lassen Sie mich wissen, wenn Sie weitere Fragen haben. – JAL

+0

@JAL Ja, es hat super funktioniert. Ich glaube, ich bin verwirrt und habe versucht, die 'if state'-Anweisung in viewWillLoad zu implementieren, weil ich das mit anderen Ereignissen/Überwachungsprotokollen gemacht habe. –

+0

Großartig, froh, es zu hören! Fühlen Sie sich frei, meine Antwort als akzeptiert zu markieren, um anderen Nutzern das gleiche Problem zu zeigen, dass meine Antwort Ihnen geholfen hat. Wenn Sie weitere Fragen haben, zögern Sie nicht, mir hier oder in einer anderen Frage zu folgen. Glückliche Kodierung! – JAL

Antwort

1

playerView:didChangeToState ist eine delegierte Methode, ein Rückruf. Sie sollten es nicht direkt wie in Ihrem zweiten Codeblock aufrufen. Wenn Sie den YTPlayerViewDelegate auf Ihren View-Controller setzen (player.delegate = self in viewDidLoad), sollte automatisch für Sie aufgerufen werden, da der Player seinen Status ändert. Stellen Sie nur sicher, dass Sie die Statusänderungsmethode implementieren.

func playerView(playerView: YTPlayerView!, didChangeToState state: YTPlayerState) 
{ 
    case YTPlayerState.Ended: 
     // handle ended state 
     break; 
    default: 
     break; 
    } 
} 
+0

Hallo @JAL, ich habe das gleiche gedacht, aber wenn ich die 'YTPlayerState.unstarted' und' YTPlayerState.queued' hinzufügen, werden ihre Benachrichtigungen nicht behandelt. Hast du bitte eine Idee dazu? –

Verwandte Themen