From 29d4a4fda2aa2e963243a7c0e599f3ae43f3560e Mon Sep 17 00:00:00 2001 From: Johannes Lumpe Date: Thu, 9 Apr 2015 17:19:09 +0300 Subject: [PATCH] Using completion handler to trigger seek event now, in order to receive correct `currentTime` value --- RCTVideo.m | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/RCTVideo.m b/RCTVideo.m index 6436849b..0c14c191 100644 --- a/RCTVideo.m +++ b/RCTVideo.m @@ -136,6 +136,7 @@ static NSString *const statusKeyPath = @"status"; - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { if (object == _playerItem) { if (_playerItem.status == AVPlayerItemStatusReadyToPlay) { + // NSLog(@"duration: %f",CMTimeGetSeconds(_playerItem.asset.duration)); [_eventDispatcher sendInputEventWithName:RNVideoEventLoaded body:@{ @"duration": [NSNumber numberWithFloat:CMTimeGetSeconds(_playerItem.duration)], @"currentTime": [NSNumber numberWithFloat:CMTimeGetSeconds(_playerItem.currentTime)], @@ -202,13 +203,15 @@ static NSString *const statusKeyPath = @"status"; CMTime tolerance = CMTimeMake(1000, timeScale); if (CMTimeCompare(current, cmSeekTime) != 0) { - [_player seekToTime:cmSeekTime toleranceBefore:tolerance toleranceAfter:tolerance]; - _pendingSeek = false; - [_eventDispatcher sendInputEventWithName:RNVideoEventSeek body:@{ - @"currentTime": [NSNumber numberWithFloat:CMTimeGetSeconds(item.currentTime)], - @"seekTime": [NSNumber numberWithFloat:seekTime], - @"target": self.reactTag + [_player seekToTime:cmSeekTime toleranceBefore:tolerance toleranceAfter:tolerance completionHandler:^(BOOL finished) { + [_eventDispatcher sendInputEventWithName:RNVideoEventSeek body:@{ + @"currentTime": [NSNumber numberWithFloat:CMTimeGetSeconds(item.currentTime)], + @"seekTime": [NSNumber numberWithFloat:seekTime], + @"target": self.reactTag + }]; }]; + + _pendingSeek = false; } } else {