From 40154d7b68053f68593c804eacd5221a92b43edd Mon Sep 17 00:00:00 2001 From: Vijay Vikram Singh Date: Thu, 3 Oct 2019 14:39:16 -0700 Subject: [PATCH] =?UTF-8?q?fix(ios):=20close=20window=20handling=20from=20?= =?UTF-8?q?presentationController=E2=80=99s=20delegate=20method=20(#11256)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sources/API/TiControllerProtocols.h | 2 ++ .../TitaniumKit/Sources/API/TiViewController.h | 2 +- .../TitaniumKit/Sources/API/TiViewController.m | 17 +++++++++++++++++ .../TitaniumKit/Sources/API/TiWindowProxy.m | 16 +++++++++++++++- 4 files changed, 35 insertions(+), 2 deletions(-) diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiControllerProtocols.h b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiControllerProtocols.h index e74e1fb44cf..7693e17e080 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiControllerProtocols.h +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiControllerProtocols.h @@ -40,6 +40,8 @@ - (void)viewWillDisappear:(BOOL)animated; - (void)viewDidAppear:(BOOL)animated; - (void)viewDidDisappear:(BOOL)animated; +- (void)presentationControllerDidDismiss:(UIPresentationController *)presentationController; +- (void)presentationControllerWillDismiss:(UIPresentationController *)presentationController; - (void)preferredContentSizeDidChangeForChildContentContainer:(id)container; - (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id)coordinator; diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiViewController.h b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiViewController.h index d11cd994e85..a74e1e0346c 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiViewController.h +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiViewController.h @@ -8,7 +8,7 @@ #import "TiControllerProtocols.h" #import -@interface TiViewController : UIViewController { +@interface TiViewController : UIViewController { TiViewProxy *_proxy; TiOrientationFlags _supportedOrientations; diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiViewController.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiViewController.m index 1b23cdccb71..0eb3ccb55a7 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiViewController.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiViewController.m @@ -14,6 +14,7 @@ - (id)initWithViewProxy:(TiViewProxy *)window { if (self = [super init]) { _proxy = window; + self.presentationController.delegate = self; [self updateOrientations]; [TiUtils configureController:self withObject:_proxy]; } @@ -167,6 +168,22 @@ - (void)viewDidDisappear:(BOOL)animated [super viewDidDisappear:animated]; } +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 130000 +- (void)presentationControllerWillDismiss:(UIPresentationController *)presentationController +{ + if ([_proxy conformsToProtocol:@protocol(TiWindowProtocol)]) { + [(id)_proxy presentationControllerWillDismiss:presentationController]; + } +} + +- (void)presentationControllerDidDismiss:(UIPresentationController *)presentationController +{ + if ([_proxy conformsToProtocol:@protocol(TiWindowProtocol)]) { + [(id)_proxy presentationControllerDidDismiss:presentationController]; + } +} +#endif + - (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id)coordinator { if ([_proxy conformsToProtocol:@protocol(TiWindowProtocol)]) { diff --git a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiWindowProxy.m b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiWindowProxy.m index 0ea92e75e29..2284bc31b0e 100644 --- a/iphone/TitaniumKit/TitaniumKit/Sources/API/TiWindowProxy.m +++ b/iphone/TitaniumKit/TitaniumKit/Sources/API/TiWindowProxy.m @@ -741,7 +741,21 @@ - (void)viewDidAppear:(BOOL)animated } - (void)viewDidDisappear:(BOOL)animated { - if (isModal && (closing || !forceModal)) { + if (isModal && closing) { + [self windowDidClose]; + } +} + +- (void)presentationControllerWillDismiss:(UIPresentationController *)presentationController +{ + if (isModal) { + [self windowWillClose]; + } +} + +- (void)presentationControllerDidDismiss:(UIPresentationController *)presentationController +{ + if (isModal) { [self windowDidClose]; } }