iOS15模态弹出界面,再下拉,返回,此时卡死,层级结构显示有一层UIParallaxDimmingView

问题:

       iOS15上,当前界面弹出一个模态界面,然后可以下拉消失。此时多次操作之后,返回上一级界面,此时会卡死。按home键,再返回app此时正常,但是再点击push或者pop还是会卡死。通过层级结构显示,最上层有一个叫UIParallaxDimmingView的盖在上面。试了一下14,并没有这种问题

思考过程:

        多次尝试之后发现,Xcode输出了一个日志:Attempt to present on while a presentation is in progress。便想到在弹出的地方加了日志打印,发现反复弹出时,模态控制器并不是成对的 init和dealloc ,原因是第一个模态还没完全消失的时候,此时已经开始弹出第二个模态控制器了,然后再返回,此时卡死。

解决方案:

        既然原因是第一个还未执行结束就弹出了第二个,那就想办法让第二次弹出的时候第一个的模态视图彻底完成。以下上代码

首先给模态控制器添加一个回调

@property(nonatomic, copy) void(^dismissBlock)(void);

然后.m文件添加

-(void)dealloc{

    if (self.dismissBlock) {

        self.dismissBlock();

        self.dismissBlock=nil;

    }

}

然后在调用的地方加一个标记 isTransition 用于标记是否转场动画完成

if(self.isTransition) {

        return;

    }

    self.isTransition =YES;

    UIViewController *modelVC= [[UIViewController alloc] init];

    [self presentViewController:modelVC animated:NO completion:nil];

    modelVC.dismissBlock = ^{

        self.isTransition =NO;

    };

你可能感兴趣的:(iOS15模态弹出界面,再下拉,返回,此时卡死,层级结构显示有一层UIParallaxDimmingView)