簡體   English   中英

Xcode 12 和 iOS 14 中的手勢問題

[英]Problem with gesture in Xcode 12 and iOS 14

升級到 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 手勢。

我找到了答案。

由於某些原因,在 iOS14 中, UITableViewCellContentView層次結構是不同的。

tableView(_:cellForRowAt:)我添加子視圖

 cell.addSubview(contentScollView)

UITableViewCellContentView正在阻止手勢。

改成

 cell.contentView.addSubview(contentScollView)

這解決了我的問題。

在目標 C 中:

[self.contentView addSubview: contentScollView];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM