From 4a3ea937394f43a1e3bce75ab5dc0576cc6cfa5d Mon Sep 17 00:00:00 2001 From: Zaid Daghestani Date: Tue, 2 Jul 2019 13:35:36 -0700 Subject: [PATCH] bring back super KVO with selector check --- ios/Video/RCTVideo.m | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/ios/Video/RCTVideo.m b/ios/Video/RCTVideo.m index 33d6be42..654deb2a 100644 --- a/ios/Video/RCTVideo.m +++ b/ios/Video/RCTVideo.m @@ -578,25 +578,7 @@ static int const RCTVideoUnset = -1; - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { - // when controls==true, this is a hack to reset the rootview when rotation happens in fullscreen - if (object == _playerViewController.contentOverlayView) { - if ([keyPath isEqualToString:@"frame"]) { - - CGRect oldRect = [change[NSKeyValueChangeOldKey] CGRectValue]; - CGRect newRect = [change[NSKeyValueChangeNewKey] CGRectValue]; - - if (!CGRectEqualToRect(oldRect, newRect)) { - if (CGRectEqualToRect(newRect, [UIScreen mainScreen].bounds)) { - NSLog(@"in fullscreen"); - } else NSLog(@"not fullscreen"); - - [self.reactViewController.view setFrame:[UIScreen mainScreen].bounds]; - [self.reactViewController.view setNeedsLayout]; - } - - return; - } - } + if([keyPath isEqualToString:readyForDisplayKeyPath] && [change objectForKey:NSKeyValueChangeNewKey] && self.onReadyForDisplay) { self.onReadyForDisplay(@{@"target": self.reactTag}); return; @@ -712,6 +694,26 @@ static int const RCTVideoUnset = -1; @"target": self.reactTag}); } } + } else if (object == _playerViewController.contentOverlayView) { + // when controls==true, this is a hack to reset the rootview when rotation happens in fullscreen + if ([keyPath isEqualToString:@"frame"]) { + + CGRect oldRect = [change[NSKeyValueChangeOldKey] CGRectValue]; + CGRect newRect = [change[NSKeyValueChangeNewKey] CGRectValue]; + + if (!CGRectEqualToRect(oldRect, newRect)) { + if (CGRectEqualToRect(newRect, [UIScreen mainScreen].bounds)) { + NSLog(@"in fullscreen"); + } else NSLog(@"not fullscreen"); + + [self.reactViewController.view setFrame:[UIScreen mainScreen].bounds]; + [self.reactViewController.view setNeedsLayout]; + } + + return; + } + } else if ([super respondsToSelector:@selector(observeValueForKeyPath:ofObject:change:context:)]) { + [super observeValueForKeyPath:keyPath ofObject:object change:change context:context]; } }