2014-07-07 29 views
1

我有一個UICollectionView(A)與另一個UICollectionView(B)UICollectionViewCell內的照片庫縮略圖。UICollectionView裏面的UICollectionViewCell - 空區取消觸摸

我想實現這個行爲:

  • 當縮略圖(A的小區)用戶水龍頭,照片的細節被打開(不 問題就在這裏)
  • 當用戶點擊UICollectionView(A)的空白空間時,我想打開(B)單元格細節。 但是UICollectionView(A)的空白區域取消用戶觸摸並且不會將它們轉發給(B)單元格。

我:

_collectionView.canCancelContentTouches = NO; 
_collectionView.delaysContentTouches = NO; 

,並使用自動佈局。

謝謝你的幫助!

+0

如果它是一個「空」的區域,爲什麼會有一個細胞?這沒有任何意義。 cv的空白區域不包含細胞。 – RegularExpression

+0

因爲整個CL區域位於另一個UICollectionViewCell中。 – VojtaStavik

+0

嘗試附加一個'UITapGestureRecognizer'到嵌入的'UICollectionView'(也許你必須將識別器的'cancelsTouchesInView'設置爲'NO'來使委託回調工作)。 – kambala

回答

2

我找到了解決方案。我subclassed UICollectionView,然後重寫hitTest方法。

- (UIView *) hitTest:(CGPoint)point withEvent:(UIEvent *)event { 

    UIView* view = [super hitTest:point withEvent:event]; 

    if (view == self) { 

     return self.superview; 

    } 

    else { 

     return view; 

    } 
} 
1

迅速版

override func hitTest(point: CGPoint, withEvent event: UIEvent?) -> UIView? { 
    let v = super.hitTest(point, withEvent: event) 
    return v == self ? superview : v 
}