【问题标题】:Problem with gesture in Xcode 12 and iOS 14Xcode 12 和 iOS 14 中的手势问题
【发布时间】:2020-09-21 07:29:58
【问题描述】:

升级到 Xcode 12 和 iOS 14 后出现问题。

场景: 我有一个嵌套的 UITableView:nestedTableView。如下所示

class GAllowGestureEventPassTableView: UITableView, UIGestureRecognizerDelegate {

    var allowGestureEventPassViews: [UIView] = []
    
    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
        panGestureRecognizer.cancelsTouchesInView = false
        guard let otherView = otherGestureRecognizer.view else { return false }
        print("tableView ???? : \(type(of: otherView))")
        if allowGestureEventPassViews.contains(otherView) {
            print("allowGestureEventPassViews contains ???? : \(type(of: otherView))")
            print("gesture pass ???? ")
            return true
        } else {
            return false
        }
    }
}

然后我将另一个 UITableView 添加到 nestedTableView 的 allowGestureEventPassViews 数组中。所以我可以控制哪个tableView可以滚动。

    self.nestedTableView.allowGestureEventPassViews.append(controller.tableView)

在 Xcode 11.7 中,iOS 14 运行良好。

日志:

tableView ???? : GAllowGestureEventPassTableView
tableView ???? : GAllowGestureEventPassTableView
tableView ???? : GAllowGestureEventPassTableView
tableView ???? : UITableView
allowGestureEventPassViews contains ???? : UITableView
gesture pass ???? 

但升级到 Xcode 12 后手势看起来有所不同。 在 Xcode 12 中,手势永远不会通过 nestedTableView

tableView ???? : GAllowGestureEventPassTableView
tableView ???? : GAllowGestureEventPassTableView
tableView ???? : GAllowGestureEventPassTableView
tableView ???? : UITableViewCellContentView

有人有同样的问题吗?或者我对 iOS14 手势有误解。

【问题讨论】:

    标签: swift gesture ios14 xcode12


    【解决方案1】:

    我找到了答案。

    在 iOS14 中,由于某些原因,UITableViewCellContentView 层次结构不同。

    tableView(_:cellForRowAt:) 我添加子视图

     cell.addSubview(contentScollView)
    

    UITableViewCellContentView 正在阻止手势。

    改成

     cell.contentView.addSubview(contentScollView)
    

    这解决了我的问题。

    【讨论】:

    • 感谢您这么快发现这一点!帮了大忙
    • Apple 在这个 iOS14 版本上真是惹恼了我。好眼力。在我的情况下,它是 UITableViewCell 内的 UICollectionView
    • 哇,我不敢相信,这东西把我所有的应用程序都弄乱了。他们怎么会这样?!
    • 哇,谢谢!我永远不会发现自己:)
    • 有人知道如何在 OBJC 中修复吗?它的工作就像魅力,但在 iOS 14 之后它就不能工作了!
    【解决方案2】:

    在目标 C 中:

    [self.contentView addSubview: contentScollView];
    

    【讨论】:

      猜你喜欢
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-13
      • 2013-10-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多