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

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

作者: 红叶潇潇 | 来源:发表于2022-02-15 17:31 被阅读0次

    问题:

           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模态弹出界面,再下拉,返回,此时卡死,层级结构显示有一

          本文链接:https://www.haomeiwen.com/subject/jmdllrtx.html