【问题标题】:Access the UIPanGestureRecognizer driving tableView(_:leadingSwipeActionsConfigurationForRowAt:)访问 UIPanGestureRecognizer 驱动 tableView(_:leadingSwipeActionsConfigurationForRowAt:)
【发布时间】:2018-10-25 13:35:05
【问题描述】:

我正在使用新的 iOS 11 tableView(_:leadingSwipeActionsConfigurationForRowAt:)tableView(_:trailingSwipeActionsConfigurationForRowAt:) 方法将滑动操作添加到我的表格单元格行。我需要一些与该平移手势相关的附加动画。如何访问我假设正在驱动这些方法的手势识别器?

以下是一些相关代码:

func tableView(_ tableView: UITableView, leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {

    //
    // I WANT TO DO SOME ANIMATION STUFF WITH THE PAN GESTURE RECOGNIZER HERE
    //

    let item = coreData.listResultsController.object(at: indexPath)
    let action = UIContextualAction(style: .normal, title: "Quantity", handler: { (action, view, completionHandler) in
        print("Show count now")
    })
    let sortOrder = item.category?.sortOrder ?? 0
    action.backgroundColor = UIColor.OMGColors.section[sortOrder]
    action.image = UIGraphicsImageRenderer(size: CGSize(width: 30, height: 30)).image { _ in
        guard let image = UIImage(named:"Pound Sign") else {
            return
        }
        image.draw(in: CGRect(x: 0, y: 0, width: 30, height: 30))

    }
    let configuration = UISwipeActionsConfiguration(actions: [action])
    return configuration

}

是否可以在此处访问平移手势识别器,还是我需要停止使用 tableView(_:leadingSwipeActionsConfigurationForRowAt:)tableView(_:trailingSwipeActionsConfigurationForRowAt:) 并自行滚动以便我可以访问?

【问题讨论】:

    标签: ios swift uitableview uipangesturerecognizer


    【解决方案1】:

    您可以访问它们,但很遗憾,我不确定它对您有多大帮助。

    您可以在 tableview 的 gestureRecognizers 属性中找到它们,就像任何其他手势识别器一样。

    但是,它是 UIPanGestureRecognizer 的自定义子类,似乎是私有 API:

    _UISwipeActionPanGestureRecognizer
    

    您可以转换为UIPanGestureRecognizer,但可能不建议尝试,因为该类是未记录的私有 API;这些东西很可能在 iOS 版本之间毫无预警地发生变化,而且 Apple 也不喜欢你做那种事情。

    【讨论】:

    • 谢谢皮特。我最终向表格单元格本身添加了一个新的 panGestureRecognizer,然后使用委托方法gestureRecognizer(_:shouldRecognizeSimultaneouslyWith:) 让它与tableView(_:leadingSwipeActionsConfigurationForRowAt:)tableView(_:trailingSwipeActionsConfigurationForRowAt:) 生成的内置方法和平共处。感谢您的信息!
    • @BrianM 这是一个很好的解决方案,感谢您的更新,我会记住的,以防我将来遇到同样的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-30
    • 2013-09-10
    • 1970-01-01
    • 2022-11-29
    相关资源
    最近更新 更多