iOS PresentViewController弹出页面延迟大,不弹出
场景
设置页,当点击底部cell,退出登录时,弹出提示框,退出登录
let action = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
let actionViewFirst = UIAlertAction(title: "取消", style: .cancel, handler: nil)
let actionViewSen = UIAlertAction(title: "确认退出", style: .destructive) { (alertAction) in
self.showSpinner()
// 请求退出登录
self.viewModel?.getLogOut()
}
action.addAction(actionViewFirst)
action.addAction(actionViewSen)
self.present(action, animated: true, completion: nil)
结果
延迟比较大,有时弹不出来,随意点击又弹出来
解决方法
将 self.present(action, animated: true, completion: nil)手动放入主线程中处理
DispatchQueue.main.async {
self.present(action, animated: true, completion: nil)
}
结论
present的方法,内部可能是异步处理