2017-05-18 46 views
0

我有什麼的UILabel在CollectionViewCell不堵觸摸事件

  • A爲UICollectionView
  • B是UICollectionViewCell
  • Ç爲B

    +------------------------------+ 
    |A        | 
    |        | 
    | +----------+ +----------+ | 
    | |C   | |B   | | 
    | |----------| |   | | 
    | |   | |   | | 
    | |B   | |   | | 
    | +----------+ +----------+ | 
    +------------------------------+ 
    
UILabel子視圖

當點擊B時,C被添加到單元格的頂部作爲子視圖。當再次點擊B時,C從超級視圖(B)中移除。

問題

觸摸事件C「通過落」到B.

我似乎無法找到如何忽略/阻止這些觸摸事件;即敲擊UILabel C不應該沿着響應者鏈向下傳播。

例如,如果C是UIButton,UICollectionView等,它將自動「截取」觸摸事件。怎麼會這樣?它們都從UIResponder繼承爲UIView s ...

回答

3

默認情況下,UILabel沒有用戶交互 - 因此它不會「截取」觸摸。

如果您在您的C標籤上設置.isUserInteractionEnabled = true,那麼應該「吃」的觸動。

編輯:快速測試與實際收集觀察室之後......你還需要手勢識別添加到標籤「吃」的觸摸。在我的(新的,改進的)快速測試中爲我工作的標籤:

class EatTouchesLabel: UILabel { 

    var myGest: UIGestureRecognizer! 

    required init(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder)! 
     self.commonInit() 
    } 

    override init(frame: CGRect) { 
     super.init(frame: frame) 
     self.commonInit() 
    } 

    func commonInit() { 
     self.isUserInteractionEnabled = true 
     if myGest == nil { 
      myGest = UITapGestureRecognizer() 
      self.addGestureRecognizer(myGest) 
     } 
    } 

} 
+0

第一件事我試過了,但它不起作用,這讓我發瘋。我的'UILabel'是通過自動佈局以編程方式設置的,這會改變什麼嗎? – Herakleis

+0

你確定你的'UILabel'實際上*在視圖層次結構中* * B嗎?你可以設置背景顏色併發布它的外觀嗎?我正在做一個覆蓋按鈕上的標籤的快速測試,如果'。 isUserInteractionEnabled'設置爲false,按鈕會觸摸......當爲真時,不會。所以....? – DonMag

+0

呃...我的壞...看到我的編輯... – DonMag