diff --git a/ios/HyperSdkReact.mm b/ios/HyperSdkReact.mm index d280835..8d111e8 100644 --- a/ios/HyperSdkReact.mm +++ b/ios/HyperSdkReact.mm @@ -311,12 +311,12 @@ -(void)stopObserving { @try { NSDictionary *jsonData = [HyperSdkReact stringToDictionary:data]; // Update baseViewController if it's nil or not in the view hierarchy. - if (self.hyperInstance.baseViewController == nil || self.hyperInstance.baseViewController.view.window == nil || [self.hyperInstance.baseViewController isMemberOfClass:RCTModalHostViewController.class]) { + if (self.hyperInstance.baseViewController == nil || self.hyperInstance.baseViewController.view.window == nil || [HyperSdkReact isRCTModalHostViewController:self.hyperInstance.baseViewController]) { // Getting topViewController id baseViewController = RCTPresentedViewController(); // Set the presenting ViewController as baseViewController if the topViewController is RCTModalHostViewController. - if ([baseViewController isMemberOfClass:RCTModalHostViewController.class] && [baseViewController presentingViewController]) { + if ([HyperSdkReact isRCTModalHostViewController:baseViewController] && [baseViewController presentingViewController]) { [self.hyperInstance setBaseViewController:[baseViewController presentingViewController]]; } else { [self.hyperInstance setBaseViewController:baseViewController]; @@ -420,6 +420,11 @@ + (NSString*)dictionaryToString:(id)dict{ return data; } ++ (BOOL)isRCTModalHostViewController:(UIViewController *)viewController { + Class rctModalClass = NSClassFromString(@"RCTModalHostViewController"); + return rctModalClass && [viewController isMemberOfClass:rctModalClass]; +} + @end @implementation HyperFragmentViewManagerIOS @@ -496,7 +501,7 @@ - (void)processWithPropsForView:(UIView *)view ns:(NSString *)ns payload:(NSStri if (jsonData && [jsonData isKindOfClass:[NSDictionary class]] && jsonData.allKeys.count > 0) { if (hyperServicesInstance.baseViewController == nil || hyperServicesInstance.baseViewController.view.window == nil) { id baseViewController = RCTPresentedViewController(); - if ([baseViewController isMemberOfClass:RCTModalHostViewController.class] && [baseViewController presentingViewController]) { + if ([HyperSdkReact isRCTModalHostViewController:baseViewController] && [baseViewController presentingViewController]) { [hyperServicesInstance setBaseViewController:[baseViewController presentingViewController]]; } else { [hyperServicesInstance setBaseViewController:baseViewController]; @@ -528,7 +533,7 @@ - (void)processWithPropsForView:(UIView *)view ns:(NSString *)ns payload:(NSStri [self.bridge.uiManager addUIBlock:^(RCTUIManager *uiManager, NSDictionary *viewRegistry) { if (hyperServicesInstance.baseViewController == nil || hyperServicesInstance.baseViewController.view.window == nil) { id baseViewController = RCTPresentedViewController(); - if ([baseViewController isMemberOfClass:RCTModalHostViewController.class] && [baseViewController presentingViewController]) { + if ([HyperSdkReact isRCTModalHostViewController:baseViewController] && [baseViewController presentingViewController]) { [hyperServicesInstance setBaseViewController:[baseViewController presentingViewController]]; } else { [hyperServicesInstance setBaseViewController:baseViewController];