UIControl 跟踪和 iOS 13 演示样式卡不能一起工作

Posted

技术标签:

【中文标题】UIControl 跟踪和 iOS 13 演示样式卡不能一起工作【英文标题】:UIControl tracking and iOS 13 presentation style cards not working together 【发布时间】:2021-02-09 16:59:53 【问题描述】:

我正在使用AORangeSlider,它是UIControl 的子类,它覆盖了beginTrackingcontinueTrackingendTracking 方法。

当这个控件被添加到一个viewController,它在ios 13 中使用“卡片样式”呈现时,它的行为非常奇怪。滑动控件时,viewController 将尝试向下滑动,它会中断滑块行为并使其不可靠且无法正常工作。

如果我改为显示viewControllerUIModalPresentationFullScreen,则控件可以正常工作。

有没有办法让 AORangeSlider/UIControl 与 iOS 13 卡片样式一起使用,并且不会发生触摸事件冲突?

【问题讨论】:

听起来这个控件可能有问题,因为普通滑块没有这个问题。如果您无法通过干预控件的代码来修复它,您可以关闭呈现视图的向下滑动手势。 【参考方案1】:

不得不向 Apple 询问这个问题,他们推荐了以下解决方案,该解决方案很有效:

if (@available(iOS 13.0, *)) 
    
    for (UIGestureRecognizer *gestureRecognizer in self.navigationController.presentationController.presentedView.gestureRecognizers) 
        gestureRecognizer.enabled = NO;
    
    

【讨论】:

以上是关于UIControl 跟踪和 iOS 13 演示样式卡不能一起工作的主要内容,如果未能解决你的问题,请参考以下文章

可能带有新 ViewController 演示样式的 iOS13 或 Xcode 错误

带有渐变层的 iOS UISLider

UIControl && UIImage

这个 UIControl 叫啥名字?

UIControl 在 ios ipad 应用程序中创建弹出窗口

UIControl 中的控件状态如何工作?