NativeScript / ios-jsc

NativeScript for iOS using JavaScriptCore

Home Page:http://docs.nativescript.org/runtimes/ios

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Add setModalInPresentation method for UINavigationController

jdnichollsc opened this issue · comments

I'm trying to call this method from a plugin but it throws an exception:

const safariHackVC = UINavigationController.alloc().initWithRootViewController(self.safariVC);
safariHackVC.presentationController.delegate = self;
if (ios.MajorVersion >= 13) {
  safariHackVC['setModalInPresentation'](true); //throws an exception
}

Any help is really appreciated 👍

Hi @jdnichollsc, you are correct. The native Objective-C code that you've found directly calls the setter function of the property. In NativeScript however, the setter is not exposed and what you need to do is use the property itself like this: safariHackVC.modalInPresentation = true;

Yes sir, in the meantime I'm using that property but it looks not working as expected (I can close the modal with a swipe back gesture) https://github.com/proyecto26/nativescript-inappbrowser/blob/master/src/InAppBrowser.ios.ts#L138

To see whether the problem is with the iOS runtime and the setter, I can suggest that you log the property before and after setting it. I believe that it should be correctly assigned.

Are you sure that the swipe back gesture should be disabled with modalInPresentation? From its description (When you set it to YES, UIKit ignores events outside the view controller's bounds and prevents the interactive dismissal of the view controller while it is onscreen.) I'm not quite sure I'd anticipate this...