Как обнаружить YTPlayerState.Ended с помощью Swift?

Я играю видео You Tube в своем приложении и пытаюсь определить, когда видео приостановлено или закончено? Я нашел kYTPlayerState функция в файле.m, но не удается преобразовать его использование в 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;
    }
}

а также.....

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

.... который я помещаю в ViewDidLoad(). Я также получаю сообщение об ошибке в моем утверждении if, которое говорит Type "()" does not conform to protocol "Boolean Type", Если вы знаете, как это исправить, или я что-то пропускаю, пожалуйста, помогите.

Я инициализирую игрока в этом представлении с @IBOutlet var player: YTPlayerView!

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;
    }
}
Другие вопросы по тегам