2016-12-31 70 views
0

我在我的tableview禁用子類使用delaysContentTouches添加自定義識別延遲

delaysContentTouches = false 
subviews.forEach { ($0 as? UIScrollView)?.delaysContentTouches = false } 

但在我的部分之一,我還是想保留的延遲。有沒有辦法取消某些部分的延遲,或者我可以添加一個自定義識別延遲的一節?

回答

0

部分不是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高於此會在長時間按下時觸發。

+0

我也發現了類似你已發佈的答案。不幸的是,它不工作(了)。單元格在子視圖中也沒有任何'UIScrollView'。 –

+0

@HennyLee是的,我不確定它是否仍在使用。檢查我的更新後的帖子是否有其他建議。 –