2016-04-04 48 views
2

我在应用程序中播放You Tube视频并试图检测视频何时暂停或结束?我在.m文件中找到了kYTPlayerState函数,但无法将其用于Swift。下面是我....如何使用Swift检测YTPlayerState.Ended?

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; 
    } 
} 

和.....

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

....我放在viewDidLoad中()。我也回到了我的if语句中的错误Type "()" does not conform to protocol "Boolean Type"。如果你知道如何解决这个问题,或者如果我要离开一些东西,请帮忙。

我初始化该视图中的球员@IBOutlet var player: YTPlayerView!

+0

嘿查尔斯对我的回答有帮助吗?如果您有任何其他问题,请告诉我。 – JAL

+0

@JAL是的,它效果很好。我想我感到困惑,并试图在viewWillLoad中实现'if state'语句,因为我已经使用其他事件/监视协议来完成此操作。 –

+0

太棒了,很高兴听到它!随时将我的答案标记为已接受,以向其他用户展示我的答案为您提供帮助的相同问题。如果您有任何其他问题,请不要犹豫,在这里或在另一个问题跟进我。快乐的编码! – JAL

回答

1

playerView:didChangeToState是委托方法,回调。你不应该像第二个代码块那样直接调用它。如果您将YTPlayerViewDelegate设置为您的视图控制器(player.delegate = self,viewDidLoad),则应在播放器更改状态时自动为您调用playerView:didChangeToState。只要确保你实现了状态改变方法。

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

嗨@JAL,我用同样的想法,但是当我添加'YTPlayerState.unstarted'和'YTPlayerState.queued',他们的通知不会被处理。你有什么想法吗? –