2017-08-17 44 views
2

我正在UITableView裏面的UITableViewCell裏面有一個UICollectionView的項目。我爲我的UICollectionViewCell使用了一個XIB,它包含一個ImageView,另一個XIB用於包含UICollectionView的UITableViewCell。我設法顯示所需的東西,但是,我的自定義集合視圖單元格不響應任何觸摸事件。經過一番研究,我曾嘗試:UITollectionViewCell裏面的UITableViewCell沒有響應動作

  • 關閉「用戶交互啓用」在UITableView的&的UITableViewCell在Interface Builder和編程,同時打開兩個的UICollectionView和UICollectionViewCell
  • 「用戶交互啓用」

    設置爲代表的UITableViewCell的,在我的自定義的UITableViewCell類實現UICollectionViewDelegate和UICollectionViewDataSource

    collectionView.delegate = self 
    collectionView.dataSource = self 
    
  • 我們內部的UICollectionView荷蘭國際集團UICollectionView

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 
        // my implementation here 
    } 
    
  • 的委託方法在cellForItemItemAt

    let tapRecognizer = UITapGestureRecognizer(target: self, action: #selector(MyCustomTableViewCell.cellTapped)) 
    tapRecognizer.numberOfTapsRequired = 1 
    cell.addGestureRecognizer(tapRecognizer) 
    
  • 添加自定義UITapGestureRecognizer每個單元使用的UITableViewCell,UICollectionView和UICollectionViewCell的自定義實現,覆蓋則hitTest功能

    override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? { 
        if let hitView = super.hitTest(point, with: event) { 
         if hitView is MyCustomCollectionViewCell { 
          print("hitTest - MyCustomCollectionViewCell") 
          return hitView 
         } else { 
          return nil 
         } 
        } else { 
         return nil 
        } 
    } 
    

這是我的自定義TableViewCell XIB的屏幕截圖: enter image description here

任何幫助表示讚賞。謝謝!

+0

儘量給修復身高到集查看。 – Ujesh

+0

使用集合查看委託方法,而不是輕擊手勢。 – Ujesh

+0

@Ujesh他們有一個固定的高度,但我看不出如何幫助 – mugiwara528

回答

1

也許你錯了。 應該爲tableView,tableViewCell,collectionView,collectionViewCell啓用用戶交互。如果你把它轉爲tableView - 那麼它裏面的一切都不會交互。 看看我的樣本項目在這裏在那裏工作: https://github.com/1mperial8e/CollectionViewExample

我已經重新創建你有同樣的情況 - 用的CollectionView裏面tableViewCell細胞ImageView的。沒有什麼額外的,只是簡單的意見。您可以比較設置並查找代碼或故事板設置中的問題。

您不需要任何輕敲手勢。 collectionView:didSelectItemAtIndexPath:完美。

+0

您好,謝謝您的回答。然而,在我的帖子說,我使用XIB動態創建我的UITableViewCell與UICollectionView(其細胞也從XIB創建),不像你們這些細胞和集合視圖和集合視圖細胞故事板創建。我也按照建議啓用了所有的用戶交互,但它仍然不起作用。 – mugiwara528

+0

我會使用XIB細胞更新測試項目。你確定Objective-C代碼示例還是應該用swift編寫? –

+0

Objective-C的示例代碼是很好,謝謝。 – mugiwara528

0

原來,TableViewCells現在有contentViews,它阻止了我所有的觸摸。所以,我只是在我的UITableViewDelegate用這個 -

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    .... 
    cell.contentView.isUserInteractionEnabled = false 
    .... 
} 

參考:can't click UIButton inside a cell in UITableview

喊出:斯塔斯Volskiy,爲是非常有幫助的

相關問題