Вы должны использовать MPMoviePlayerNotifications вместо того, чтобы вручную опрашивать текущее состояние.
Например - где-то в вас инициализирующий код:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(MPMoviePlayerLoadStateDidChange:)
name:MPMoviePlayerLoadStateDidChangeNotification
object:nil];
Теперь реализуем обработчик уведомлений:
- (void)MPMoviePlayerLoadStateDidChange:(NSNotification *)notification
{
NSLog(@"loadstate change: %Xh", movieController_.loadState);
}
И где-то в вашем деинициализирующем коде:
[[NSNotificationCenter defaultCenter] removeObserver:self
name:MPMoviePlayerLoadStateDidChangeNotification
object:nil];
Также обратите внимание, что MPMoviePlayerController.loadState является растровым изображением -> вам нужно замаскировать значение, которое вы хотите проверить.
Например:
if ((movieController_.loadState & MPMovieLoadStatePlayable) == MPMovieLoadStatePlayable)
{
NSLog(@"yay, it became playable");
}