2015-09-02 100 views
2

我在我的TableViewController的不同UIViews上創建和識別了幾個水龍頭手勢,並且正確識別了不同的手勢。在本代碼所示:UITableViewCell中的多個水龍頭手勢

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("CustomCell", forIndexPath: indexPath) as! CustomCell 
    let tapOnView1 = UITapGestureRecognizer(target: self, action: Selector("handleTap:")) 
    let tapOnView2 = UITapGestureRecognizer(target: self, action: Selector("handleTap:")) 
    cell.View1.addGestureRecognizer(tapOnView1) 
    cell.View1.userInteractionEnabled = true 
    cell.View2.addGestureRecognizer(tapOnView1) 
    cell.View2.userInteractionEnabled = true 
    return cell 
} 

我柄敲擊看起來是這樣的:

func handleTap(sender:UITapGestureRecognizer) { 
     let tappedView = sender.view 
     self.tableView.beginUpdates() 

     if tappedView == cell.View1 { 
      print("View 1 Tapped") 
     } else if tappedView == cell.View2 { 
      print("View 2 Tapped") 
     } 
} 

我想,因爲實際上幾個UIViews有不同的操作這些代碼移動到我的CustomCell UITableViewCell類,需要在水龍頭上進行。另外將它們全部移到Cell本身似乎對我來說是正確的。我尋找答案,但我看到的唯一真實答案是使用按鈕,有幾個原因,這對我來說真的不是沒有一些嚴重的重構和重寫的選項。我曾嘗試多次迭代下面的代碼在我CustomCell類:

override func awakeFromNib() { 
     super.awakeFromNib() 
     // Initialization code 
     let tapOnView1 = UITapGestureRecognizer(target: self, action: Selector("handleTap:")) 
     addGestureRecognizer(tapOnView1) 

     let tapOnView2 = UITapGestureRecognizer(target: self, action: Selector("handleTap:")) 
     addGestureRecognizer(tapOnView2) 

    } 

這handleTap功能:

func handleTap(sender: UITapGestureRecognizer) { 
     if delegate != nil && item != nil { 
      if sender.view == view1 { 
       print("view1 tapped") 
      } else { 
       print("view2 tapped") 
      } 
     } 

    } 

的廠景水龍頭永遠不會被調用。無論在我點擊的單元格中的哪個位置,它都會調用view2 tap。我曾嘗試使用不同的選擇器函數(即handleTapOne:用於View1,handleTapTwo:用於View2),但我似乎無法弄清楚如何做到這一點。

它再次在我的UITableViewController中工作,但當我嘗試將所有的tap識別器移動到UITableViewCell時它不起作用。

感謝您的幫助。

+0

你在'override func awakeFromNib()'中的代碼看起來不對,應該是'self.View1.addGestureRecognizer(tapOnView1)'嗎? – iphonic

+0

嗯,我有點白癡。謝謝。這確實解決了我的問題。我瘋了,還有一件愚蠢的事情讓我沮喪。感謝你的回答。 – Rakote

回答

0

iphonic在上面回答了我的問題。我猜我是個白癡。盯着一個長達兩年的問題,而忽略了最簡單的事情。

相關問題