我在我的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是的,我不確定它是否仍在使用。檢查我的更新後的帖子是否有其他建議。 –