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;

    };

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容