iOS UIAlertController 弹出延迟

在点击tableview上的一个cell后弹出alert,会发现有延迟的问题,或者点击没有反应,随便再点击一下才会弹出。而且只有在cell.selectionStyle = UITableViewCellSelectionStyleNone;时才会出现。查资料得出以下推断:

点击事件发生后没有处理UI变动,或者加到其他线程中了,主线程经过一次(或多次)循环后才发现此需要刷新UI,然后才会刷新UI。

解决方案:

方案一
不要设置为UITableViewCellSelectionStyleNone,在点击事件中用` [tableView deselectRowAtIndexPath:indexPath animated:YES];去除选中效果即可。

方案二
将弹出的代码直接放到主线程执行
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
UIAlertController *alertC = [UIAlertController alertControllerWithTitle:@"是否退出" message:@"" preferredStyle:UIAlertControllerStyleAlert];

    UIAlertAction *actionCancel = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil];
    [alertC addAction:actionCancel];
        
    UIAlertAction *actionConfirm = [UIAlertAction actionWithTitle:@"退出" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action)
                                        {
                                            // do sth
                                        }];
    [alertC addAction:actionConfirm];

    dispatch_async(dispatch_get_main_queue(), ^{        
    [self presentViewController:AlertView animated:YES completion:nil];
    });
}
有大神知道具体原因或者有不同思路欢迎留言探讨学习。

参考资料:http://stackoverflow.com/questions/26449724/uialertcontroller-showing-with-delay

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

推荐阅读更多精彩内容

  • 1.前言今天有个小伙伴问我,他在给tableViewCell添加选中事件的时候,调用UIAlertControll...
    俊俊吖阅读 975评论 1 4
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,209评论 30 471
  • 当一个人的心处在一个浮躁的状态时,就很容易出现一些问题,发现马大哈这个词就是给我准备的啊。 昨天因为和一个客户谈论...
    赵大耳阅读 189评论 0 0
  • 强硬的功力破了翼族的结界,来人正是司音日思夜想的师父,墨渊。 “师父···”一声师父,声泪俱下,思念,委屈,种种,...
    酒醉箜篌阅读 247评论 0 1
  • 育儿情况 全职太太是我的职位,但是我却没有做好。很多时候我都是焦虑不安的。最近几个星期康康(1周11个月)总是动不...
    安康妈咪阅读 118评论 0 0