فهرست منبع

ZZDialogViewController中修改了ZZMaskView的时机

zzb 4 سال پیش
والد
کامیت
92d56e2b12
3فایلهای تغییر یافته به همراه28 افزوده شده و 6 حذف شده
  1. 1 0
      ZZUIKit/Classes/ZZDialog/ZZDialog.h
  2. 21 0
      ZZUIKit/Classes/ZZDialog/ZZDialog.m
  3. 6 6
      ZZUIKit/Classes/ZZDialog/ZZDialogViewController.m

+ 1 - 0
ZZUIKit/Classes/ZZDialog/ZZDialog.h

@@ -65,6 +65,7 @@ ZZDialogCancelMarginMake(CGFloat top, CGFloat right)
 @property(nonatomic,assign) ZZDialogCancelPosition cancelPosition;
 
 -(void)dismiss;
+-(void)dismissThen:(void(^)(void))todo;
 @end
 
 NS_ASSUME_NONNULL_END

+ 21 - 0
ZZUIKit/Classes/ZZDialog/ZZDialog.m

@@ -104,6 +104,27 @@
     }
 }
 
+-(void)dismissThen:(void(^)(void))todo{
+    UIViewController *controller = [self zz_viewController];
+    if (!controller ) {
+        return;
+    }
+    if (controller.presentingViewController) {
+        //presented
+        [controller dismissViewControllerAnimated:false completion:todo];
+    }else{
+        if (self.superview != controller.view) {
+            [self.superview removeFromSuperview];
+        }else{
+            [self removeFromSuperview];
+            
+        }
+        if (todo) {
+            todo();
+        }
+    }
+}
+
 -(void)setCancelPosition:(ZZDialogCancelPosition)cancelPosition{
     _cancelPosition = cancelPosition;
     [self placeCancelBtn];

+ 6 - 6
ZZUIKit/Classes/ZZDialog/ZZDialogViewController.m

@@ -33,12 +33,6 @@
 -(void)commonInit{
     self.definesPresentationContext = true;
     self.modalPresentationStyle = UIModalPresentationOverCurrentContext;
-    self.maskView = [[ZZMaskView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_W(), SCREEN_H())];
-    __weak typeof(self) weakSelf = self;
-    [self.view insertSubview:self.maskView atIndex:0];
-    self.maskView.zz_tapAction(^(UIView *v){
-      [weakSelf.dialog dismiss];
-    });
 }
 
 - (void)awakeFromNib{
@@ -48,6 +42,12 @@
 -(void)viewDidLoad{
     [super viewDidLoad];
     [self.view addSubview:self.dialog];
+    self.maskView = [[ZZMaskView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_W(), SCREEN_H())];
+    __weak typeof(self) weakSelf = self;
+    [self.view insertSubview:self.maskView atIndex:0];
+    self.maskView.zz_tapAction(^(UIView *v){
+      [weakSelf.dialog dismiss];
+    });
 }