yogevbd 6 years ago
parent
commit
d2357c53fd
2 changed files with 13 additions and 15 deletions
  1. 0
    2
      lib/ios/RNNOverlayManager.h
  2. 13
    13
      lib/ios/RNNOverlayManager.m

+ 0
- 2
lib/ios/RNNOverlayManager.h View File

10
 - (void)showOverlay:(UIViewController*)viewController completion:(RNNTransitionCompletionBlock)completion;
10
 - (void)showOverlay:(UIViewController*)viewController completion:(RNNTransitionCompletionBlock)completion;
11
 - (void)dismissOverlay:(NSString*)componentId completion:(RNNTransitionCompletionBlock)completion rejection:(RNNTransitionRejectionBlock)reject;
11
 - (void)dismissOverlay:(NSString*)componentId completion:(RNNTransitionCompletionBlock)completion rejection:(RNNTransitionRejectionBlock)reject;
12
 
12
 
13
-@property (nonatomic, retain) RNNOverlayWindow *overlayWindow;
14
-
15
 @end
13
 @end

+ 13
- 13
lib/ios/RNNOverlayManager.m View File

4
 
4
 
5
 @implementation RNNOverlayManager {
5
 @implementation RNNOverlayManager {
6
 	NSMutableDictionary* _overlayDict;
6
 	NSMutableDictionary* _overlayDict;
7
+	NSMutableDictionary* _overlayWindows;
7
 	RNNStore* _store;
8
 	RNNStore* _store;
8
-	RNNOverlayWindow *_overlayWindow;
9
-	UIWindow *_previousWindow;
10
 }
9
 }
11
 
10
 
12
 - (instancetype)initWithStore:(RNNStore *)store {
11
 - (instancetype)initWithStore:(RNNStore *)store {
13
 	self = [super init];
12
 	self = [super init];
14
 	_overlayDict = [[NSMutableDictionary alloc] init];
13
 	_overlayDict = [[NSMutableDictionary alloc] init];
14
+	_overlayWindows = [[NSMutableDictionary alloc] init];
15
 	_store = store;
15
 	_store = store;
16
 	return self;
16
 	return self;
17
 }
17
 }
20
 
20
 
21
 - (void)showOverlay:(RNNRootViewController *)viewController completion:(RNNTransitionCompletionBlock)completion {
21
 - (void)showOverlay:(RNNRootViewController *)viewController completion:(RNNTransitionCompletionBlock)completion {
22
 	[self cacheOverlay:viewController];
22
 	[self cacheOverlay:viewController];
23
-	_previousWindow = [UIApplication sharedApplication].keyWindow;
24
-	_overlayWindow = [[RNNOverlayWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
25
-	[_overlayWindow setWindowLevel:UIWindowLevelNormal];
26
-	[_overlayWindow setRootViewController:viewController];
27
-	[_overlayWindow makeKeyAndVisible];
23
+	UIWindow* overlayWindow = [[RNNOverlayWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
24
+	[_overlayWindows setObject:overlayWindow forKey:viewController.componentId];
25
+	[overlayWindow setWindowLevel:UIWindowLevelNormal];
26
+	[overlayWindow setRootViewController:viewController];
27
+	[overlayWindow setHidden:NO];
28
 	
28
 	
29
 	completion();
29
 	completion();
30
 }
30
 }
32
 - (void)dismissOverlay:(NSString*)componentId completion:(RNNTransitionCompletionBlock)completion rejection:(RNNTransitionRejectionBlock)reject {
32
 - (void)dismissOverlay:(NSString*)componentId completion:(RNNTransitionCompletionBlock)completion rejection:(RNNTransitionRejectionBlock)reject {
33
 	RNNRootViewController* viewController = [_overlayDict objectForKey:componentId];
33
 	RNNRootViewController* viewController = [_overlayDict objectForKey:componentId];
34
 	if (viewController) {
34
 	if (viewController) {
35
-		[self detachOverlayWindow];
35
+		[self detachOverlayWindow:componentId];
36
 		[self removeCachedOverlay:viewController];
36
 		[self removeCachedOverlay:viewController];
37
 		completion();
37
 		completion();
38
 	} else {
38
 	} else {
51
 	[_store removeComponent:viewController.componentId];
51
 	[_store removeComponent:viewController.componentId];
52
 }
52
 }
53
 
53
 
54
-- (void)detachOverlayWindow {
55
-	[_overlayWindow setRootViewController:nil];
56
-	_overlayWindow = nil;
57
-	[_previousWindow makeKeyAndVisible];
58
-	_previousWindow = nil;
54
+- (void)detachOverlayWindow:(NSString *)componentId {
55
+	UIWindow* overlayWindow = [_overlayWindows objectForKey:componentId];
56
+	[overlayWindow setHidden:YES];
57
+	[overlayWindow setRootViewController:nil];
58
+	overlayWindow = nil;
59
 }
59
 }
60
 
60
 
61
 @end
61
 @end