2014-03-31 53 views
1

基本上我想要做的是在UICollectionView中有一個單元,它的哪一部分將響應點擊,而其中的一部分則不會。 這個單元格將是一個正常的單元格,它在點擊時展開,顯示不會響應點按的展開區域的子視圖。使UICollectionViewCell的一部分不可點擊

我考慮擴大細胞,並添加一個子視圖它上面,這將不可點擊。但我認爲這是完成它的一種「壞」方式。

有沒有這樣做的最好方法?

這就是我想要做的:

enter image description here

任何幫助表示感謝,謝謝!

回答

0

隨着選擇

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath; 

你必須返回一個單元格,並在此功能,您應該確定電池是否是可以點擊的,然後簡單地做

cell.userInteractionEnabled = shouldAllowTouch; 
+0

但是,這將使所有單元格不可點擊,並且我想讓頂部保持可點擊狀態,如圖所示。 – xicocaio

+0

您可以製作不可點擊的單元格視圖 –

+0

或者讓您不希望在其自己的單元格中選擇的內容,並且使該單元格的用戶交互功能未啓用 –

1

你需要繼承UICollectionViewCell ,那麼覆蓋hitTest:withEvent而不是pointInside:withEvent,在hitTest:withEvent:之內,您應該定義targetRect,然後檢查點用戶點擊是否在targetRect之內。

這是在我的tableViewCellcollectionViewCell類似)上工作的代碼。

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{ 
    CGRect targetRect = CGRectMake(0, 0, CGRectGetWidth(self.bounds), 20); 
    if (CGRectContainsPoint(targetRect, point)) { 
     return nil; 
    } else { 
     return [super hitTest:point withEvent:event]; 
    } 
} 
+0

感謝您的回覆,您的解決方案確實看起來很有趣並且合理。但是,我前一段時間發佈了這個問題,並且我通過使用UICollectionViewCell和UIView解決了這個問題。所以,我將這個單元展開爲所需的尺寸,並在新的展開區域上放置一個視圖。由於我目前沒有在這個項目上工作,我現在無法驗證你的答案。但是,只要我能嘗試你的解決方案,我會給你一個反饋。無論如何感謝您的幫助! =) – xicocaio

+0

很高興聽到您修復它。將遮蓋物放在擴大的區域是一個很好的選擇。 – superZhen