gpt4 book ai didi

ios - 识别长按 UITableViewCell 的真实索引路径

转载 作者:行者123 更新时间:2023-11-30 11:26:25 25 4
gpt4 key购买 nike

我正在尝试检测 Collection View 中长按的 TableView 单元格。

我有我的主视图 Controller (MainVC 类),其中包含 CollectionView(CollectionViewController 类)。 Collection View 的每个单元格都有一个标签和一个 TableView(TableViewController 类)。 Collection View 委托(delegate)方法在 MainVC 内部实现,tableView 委托(delegate)方法在 CollectionViewController 类内部实现。

我试图在长按时检测 tableViewCell indexPath (为了获取它的内容)。

执行检测的代码(在 CollectionViewController 内部):

override func awakeFromNib() {
super.awakeFromNib()
let longPressRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(self.longTapped(longPressGestureRecognizer:)))
longPressRecognizer.delegate = self
self.addGestureRecognizer(longPressRecognizer)
}

func longTapped(longPressGestureRecognizer: UILongPressGestureRecognizer) {
if longPressGestureRecognizer.state == UIGestureRecognizerState.began {
let touchPoint = longPressGestureRecognizer.location(in: self)

if let indexPath = self.eventsTableView.indexPathForRow(at: touchPoint) {
print(indexPath.row) //print the current *displayed* cell index
}
}
}

系统可以识别长按,但我遇到了问题。这段代码:

let indexPath = self.tableView.indexPathForRow(at: touchedPoint)

假设可以识别点击的单元格索引路径,似乎找到了当前显示的点击的单元格索引。我的意思是,如果设备当前未显示上面的 20 个单元格,则 indexPathForRow 将忽略它们,并仅对显示的单元格进行计数。例如,如果 TableView 上有 30 行,并且用户当前正在查看第 23 行中的单元格,系统将认为该单元格位于(例如)第 4 行中,因为它是第 4 个单元格当前显示。

我不知道这个 tableView 位于 Collection View 中这一事实是否有联系,但我希望这些额外的信息能够帮助您帮助我(:

非常感谢!

最佳答案

试试这个:

var longpress = UILongPressGestureRecognizer()

override func viewDidLoad() {
super.viewDidLoad()
longpress = UILongPressGestureRecognizer(target: self, action: #selector(self.longPressGestureRecognized))
tableView.addGestureRecognizer(longpress)
}

@objc func longPressGestureRecognized(gestureRecognizer: UIGestureRecognizer) {
let longPress = gestureRecognizer as! UILongPressGestureRecognizer
if longPress.state == UIGestureRecognizerState.began {
let locationInTableView = longPress.location(in: tableView)
let indexPath = tableView.indexPathForRow(at: locationInTableView)
print(indexPath?.row ?? "-0")
}
}

关于ios - 识别长按 UITableViewCell 的真实索引路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50698850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com