【问题标题】:Gesture not recognized in all TableView Cells在所有 TableView 单元格中都无法识别手势
【发布时间】:2020-04-27 15:55:46
【问题描述】:

好的,这个可能有点难以说明,但问题是:我尝试在 tableView 单元格上附加一个长按手势识别器,并将其链接到 Viewcontroller 中。但是,手势不适用于表格中的每个单元格 - 只有 1 个。并且它作用于变化的 1 个单元格(有时是第一个,有时是第二个,等等 - 取决于实际有多少单元格有数据)。如果有人能指出我正确的方向,将不胜感激。

以下是处理手势的代码。谢谢!

        if recognizer.state == .changed
        {
            let alertController = UIAlertController(title: nil, message:
                "Open Product in Safari", preferredStyle: .alert)
            let indexPath = tableView.indexPathForSelectedRow
            let itemSku = self.itemArray[indexPath?.row ?? 0].sku
            alertController.addAction(UIAlertAction(title: "Go to Safari", style: .default,handler: { action in
                UIApplication.shared.open(URL(string: "\(itemURL)\(itemSku ?? "")") ?? URL(string: "")!, options: [:]) { _ in
                print("Link opened")
            }
        }))

        present(alertController, animated: true, completion: nil)
    }

}

【问题讨论】:

    标签: ios swift xcode tableview cell


    【解决方案1】:

    由于您没有发布任何与您的问题相关的代码,因此最好的猜测是:

    手势识别器 - 例如UILongPressGestureRecognizer - 是不同的实例。它们一次只能添加到一个对象。如果您尝试将其添加到多个对象,它只会“存在”在最后一个对象上。

    您可能创建了一个手势识别器,然后尝试将其添加到每个单元格。

    假设您正在使用自定义单元格类,您可能希望在单元格初始化代码中实例化 UILongPressGestureRecognizer 并将其添加到 self(或 self.contentView 或您想要响应手势的任何视图)。还将其目标设置为单元类中的函数。当它被触发时,使用“回调”闭包或协议/委托模式来通知你的控制器手势发生了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多