Ваш подход хорош, но для корректной работы требуются некоторые улучшения.
Вместо проверки positionFloat
в диапазоне pauseFloat
+ / - Accuracy
оставьте время последней паузы в качестве контрольной точки. Затем, если positionFloat
больше этой контрольной точки, приостановите просмотр фильма и установите следующую контрольную точку.
pauseTimeArray = [NSArray arrayWithObjects:[NSNumber numberWithFloat:5.00],[NSNumber numberWithFloat:10.00],[NSNumber numberWithFloat:15.00] , nil];
uint currentCheckpoint = 0;
[NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(timeAction) userInfo:nil repeats:YES];
- (void)timeAction{
if (_moviePlayer.playbackState == MPMoviePlaybackStatePlaying) {
NSNumber * positionNum = [NSNumber numberWithFloat:_moviePlayer.currentPlaybackTime];
float positionFloat = [positionNum floatValue];
float pauseFloat = [[pauseTimeArray objectAtIndex: currentCheckpoint] floatValue];
if (positionFloat > pauseFloat) {
[_moviePlayer pause];
currentCheckpoint++;
}
}
}
И, конечно, проверьте, находится ли currentCheckpoint внутри ваших границ pauseTimeArray.