| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- //
- // MMPopupWindow.m
- // MMPopupView
- //
- // Created by Ralph Li on 9/6/15.
- // Copyright © 2015 LJC. All rights reserved.
- //
- #import "MMPopupWindow.h"
- #import "MMPopupCategory.h"
- #import "MMPopupDefine.h"
- #import "MMPopupView.h"
- @interface MMPopupWindow()
- <
- UIGestureRecognizerDelegate
- >
- @end
- @implementation MMPopupWindow
- - (instancetype)initWithFrame:(CGRect)frame
- {
- self = [super initWithFrame:frame];
-
- if ( self )
- {
- self.windowLevel = UIWindowLevelStatusBar + 1;
-
- UITapGestureRecognizer *gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(actionTap:)];
- gesture.cancelsTouchesInView = NO;
- gesture.delegate = self;
- [self addGestureRecognizer:gesture];
- }
- return self;
- }
- + (MMPopupWindow *)sharedWindow
- {
- static MMPopupWindow *window;
- static dispatch_once_t onceToken;
-
- dispatch_once(&onceToken, ^{
- window = [[MMPopupWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
- window.rootViewController = [UIViewController new];
- });
-
- return window;
- }
- - (void)cacheWindow
- {
- [self makeKeyAndVisible];
- [[[UIApplication sharedApplication].delegate window] makeKeyAndVisible];
-
- [self attachView].mm_dimBackgroundView.hidden = YES;
- self.hidden = YES;
- }
- - (void)actionTap:(UITapGestureRecognizer*)gesture
- {
- if ( self.touchWildToHide && !self.mm_dimBackgroundAnimating )
- {
- for ( UIView *v in [self attachView].mm_dimBackgroundView.subviews )
- {
- if ( [v isKindOfClass:[MMPopupView class]] )
- {
- MMPopupView *popupView = (MMPopupView*)v;
- [popupView hide];
- }
- }
- }
- }
- - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
- {
- return ( touch.view == self.attachView.mm_dimBackgroundView );
- }
- - (UIView *)attachView
- {
- return self.rootViewController.view;
- }
- @end
|