我在我的tableview禁用子类使用delaysContentTouches
:添加自定义识别延迟
delaysContentTouches = false
subviews.forEach { ($0 as? UIScrollView)?.delaysContentTouches = false }
但在我的部分之一,我还是想保留的延迟。有没有办法取消某些部分的延迟,或者我可以添加一个自定义识别延迟的一节?
我在我的tableview禁用子类使用delaysContentTouches
:添加自定义识别延迟
delaysContentTouches = false
subviews.forEach { ($0 as? UIScrollView)?.delaysContentTouches = false }
但在我的部分之一,我还是想保留的延迟。有没有办法取消某些部分的延迟,或者我可以添加一个自定义识别延迟的一节?
部分不是tableView中的实际对象,所以我对你的第一个问题的回答是否定的。 .delaysContentTouches
适用于整个tableView。
对于你的第二次查询,我相信有一种可能的方式是通过为所需单元格的scrollView子视图设置延迟。在您的tableView(cellForRowAt:indexPath)FUNC,你可以有这样的事情:
if indexPath.section == 3 { //or whatever your desired section is
for view in cell.subviews {
if view is UIScrollView {
let currentView = view as! UIScrollView
currentView.delaysContentTouches = true
}
}
}
这会发现在你的细胞的子视图的UIScrollView的在你需要的部分。然后它会相应地设置.delaysContentTouches
属性。
我没有亲自执行此代码,只是研究它,所以让我知道它是否工作。
编辑
显然,在UITableViewCell中的UIScrollView中已被弃用,因此上述方法就不管用了。
我对你的下一个最好的建议是使用UILongPressGuestureRecognizer。这与延迟触摸并不完全相同,但在实际执行中可能会有类似的效果。
你可以在同一的tableView使用它(cellForRowAt:indexPath)FUNC像这样:
let press = UILongPressGestureRecognizer(target: self, action: #selector(handlePress))
press.minimumPressDuration = 2.0 //however long you want
cell.addGestureRecognizer(press)
无论你正在试图通过选择您的tableView的某些行实现可以被放置在handlePress
FUNC高于此会在长时间按下时触发。
我也发现了类似你已发布的答案。不幸的是,它不工作(了)。单元格在子视图中也没有任何'UIScrollView'。 –
@HennyLee是的,我不确定它是否仍在使用。检查我的更新后的帖子是否有其他建议。 –