【问题标题】:Pan gesture in UITableViewCell prevents scrolling in UITableView. How to fix it?UITableViewCell 中的平移手势可防止 UITableView 中的滚动。如何解决?
【发布时间】:2021-03-01 21:58:16
【问题描述】:

我有一个带有自定义 TableViewCell 的 UITableView。我使用平移手势来识别位置,同时将手指向左和向右移动。根据手指位置,我更改了 TableViewCell 中标签中的一些值。这真的很棒。但是突然我不能上下滚动TableView。我已经阅读了原因。 Swift 不能同时使用两个手势识别器。我发现很多人的例子几乎相同。我尝试了很多,但我无法解决我的问题。我使用 Swift 5。您能否更准确地描述一下如何解决我的问题?非常感谢

import UIKit

class TVCLebensmittel: UITableViewCell {

    override func awakeFromNib() {
        super.awakeFromNib()
        
        let gestureRecognizer = UIPanGestureRecognizer(target: self, action: #selector(handlePan))
        self.addGestureRecognizer(gestureRecognizer)
        
    }

    @IBAction func handlePan(_ gestureRecognizer: UIPanGestureRecognizer) {
        if gestureRecognizer.state == .began {

            let translation = gestureRecognizer.translation(in: self)
            // Put my finger on the screen

        } else if gestureRecognizer.state == .changed {
            
            let translation = gestureRecognizer.translation(in: self)
            // While moving my finger ...

        } else if gestureRecognizer.state == .ended {

            let translation = gestureRecognizer.translation(in: self)
            // Lift finger

        }
    }   
    ...
}

【问题讨论】:

  • 我刚刚找到了一个可以正常工作的解决方案,但是我遇到了另一个问题。解决方案:我将平移手势从 TableViewCell 移动到 TableView 并且效果很好。我可以上下移动桌子,我可以左右移动手指,我可以得到手指的位置。但我不知道基础表数组索引。我试图在 willSelectRowAtIndexPath 中设置一个类变量 actIndex。但是当我点击屏幕并左右移动手指时,这个功能永远不会进入。所以这行不通。
  • 如何使用 UIPanGestureRecognizer 确定手指在哪个索引上左右移动?谢谢

标签: ios swift uitableview gesture pan


【解决方案1】:

解决方案是将平移手势插入到 tableview 而不是 tableviewcell。这样我就可以听到左右平移以及tableview的上下移动了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-22
    相关资源
    最近更新 更多