UIPresentationController 在巨大延迟后呈现

Posted

技术标签:

【中文标题】UIPresentationController 在巨大延迟后呈现【英文标题】:UIPresentationController is being presented after huge delay 【发布时间】:2016-07-19 09:28:55 【问题描述】:

这就是我展示我的自定义UIPresentationController的方式:

func presentOverlayController(controller: UIViewController) 

    controller.modalPresentationStyle = .Custom
    controller.transitioningDelegate = self

    presentViewController(controller, animated: true, completion: nil)


//MARK: - UIViewControllerTransitioningDelegate

public func presentationControllerForPresentedViewController(presented: UIViewController, presentingViewController presenting: UIViewController, sourceViewController source: UIViewController) -> UIPresentationController? 
    return OverlayPresentationController(presentedViewController: presented, presentingViewController: presenting)

点击UITableViewCell 后,我会展示我的控制器。只有当我点击单元格两次时,它才会非常快速地呈现。但是,当我执行单击时,它也能正常工作,但延迟很大(15-60 秒之间)。

是什么原因? 如何解决?

【问题讨论】:

【参考方案1】:

我也遇到了didSelectRowAtIndexPath 的一个已知错误,这是我使用的解决方法。

尝试在您的 didSelectRowAtIndexPath 中执行此操作:

dispatch_async(dispatch_get_main_queue(), 
    presentOverlayController(......)
)

参考资料:

UITableView didSelectRowAtIndexPath sometimes called after second tap UITableViewCell selection Storyboard segue is slow - double tapping works though

【讨论】:

【参考方案2】:

试试这个:

dispatch_async(dispatch_get_main_queue()) 
    self.presentViewController(controller, animated: true, completion: nil)

【讨论】:

以上是关于UIPresentationController 在巨大延迟后呈现的主要内容,如果未能解决你的问题,请参考以下文章

UIPresentationController 在巨大延迟后呈现

UIPresentationController 传递触摸事件

拖动以关闭 UIPresentationController

iOS 上的自定义 UIPresentationController

在两个不同的 UIPresentationController 之间进行适配

基于视图大小的自适应 UIPresentationController