2016-09-29 39 views
0

我有一個UITableViewUITableViewCell s其accessoryViewUIButton s。當用戶按下這個UIButton時,會觸發一個動作。它工作的很好,但有一個不方便:accessoryView沒有卡在單元格的右邊緣,所以當用戶按下單元格的最右側時,按鈕不會被觸發,甚至更糟糕:單元格被選中,觸發不想要的行爲。如何在UITableViewCell的某個位置禁用用戶交互?

這是我如何定義我的細胞:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

    let cell = tableView.dequeueReusableCell(withIdentifier: "CellIdentifier") 

    let accessoryButton = MyCustomAccessoryView(frame: CGRect(x: 0.0, y: 0.0, width: 45.0, height: 45.0)) 
    accessoryButton.addTarget(self, action: #selector(MyController.accessoryButtonTapped(_:)), for: .touchUpInside) 
    cell?.accessoryView = accessoryButton 

    return cell 
} 

MyCustomAccessoryView.swift:

class MyCustomAccessoryView: UIButton { 

    override init(frame: CGRect) { 
     super.init(frame: frame) 

     self.backgroundColor = UIColor.red 
    } 

    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
    } 
} 

下面是結果:

enter image description here

所以我的問題是:有一種方法可以禁用012最右側的用戶交互?

回答

0

您應該添加按鈕作爲您的單元格內容視圖的子視圖。所以你可以爲你的按鈕設置所需的框架,並且你的cell不會顯示額外的空間。

因此,添加按鈕的contentviewsubview

第二件事,如果你想設置按鈕作爲配件視圖,然後在右側添加另一個blank labelblank view,所以它不會得到click

上述解決方案將是你而不是管理複雜的東西,比如更好的 - 對特定區域等禁用userinteraction

+0

謝謝,但我試圖添加按鈕,我的單元格的內容的子視圖,並有按鈕和電池(幾乎是不可能的觸摸按鈕,即使'gestureRecognizer之間的巨大沖突:shouldRequireFailureOf:'方法來實現,該細胞是點擊按鈕時選擇)。 我沒有得到你的第二個解決方案:如果我在右側放置一個空白視圖,點擊這個視圖將選擇單元格,對不對? – Randy

相關問題