我有一個UICollection視圖,它實現了「didSelectItemAtIndexPath ...」方法。當單元格被選中(點擊)時,將轉換到另一個視圖控制器。但是,每個單元格還包含一個垂直滾動視圖。我希望用戶可以選擇與每個單元格進行交互,以便垂直滑動以查看滾動視圖的內容,或者點擊一次以選擇單元格。UICollectionViewCell回覆多個手勢識別器
我的第一個想法是在單元格中添加兩個手勢識別器,一個用於滑動,另一個用於點擊,但我不確定是否開始向UICollectionView和scrollview添加更多手勢識別器是一個好主意。我也不確定如何將滑動手勢與滾動視圖的滾動操作綁定。
我覺得這個資源是:http://uncorkedstudios.com/2013/05/03/using-uigesturerecognizers-with-uicollectionviews/,建議使用requireGestureRecognizerToFail。
經過上述兩種方法的攻擊之後,我不覺得更接近於搞清楚如何做到這一點,更重要的是,如何正確地做到這一點。 任何人都可以提出一個明智的策略,讓每個UICollectionViewCell用兩個獨立的動作來回應兩個獨特的手勢嗎?
編輯 我曾嘗試以下辦法來解決這個問題,還是不能讓兩個手勢識別器一起工作:
1)要我收集觀察室(UICollectionViewCell的子類),我添加我在init方法建立一個UITapGestureRecognizer屬性:
self.tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(cellWasTapped:)];
self.tap.delegate = self; //this class is a UIGestureRecognizerDelegate
2)的方法,cellWasTapped
- (void)cellWasTapped:(UITapGestureRecognizer *)sender
{
NSLog(@"this cell was tapped!"); //temporary
}
3)由於滾動視圖網頁視圖滾動視圖,我已經添加了手勢識別代碼在web視圖委託方法的末尾:
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
[self.overlayView removeFromSuperview];
CGSize contentSize = self.webView.scrollView.contentSize;
CGSize viewSize = self.webView.bounds.size;
float rw = viewSize.width/contentSize.width;
self.webView.scrollView.minimumZoomScale = rw;
self.webView.scrollView.maximumZoomScale = rw;
self.webView.scrollView.zoomScale = rw;
self.webView.scrollView.scrollEnabled = YES;
self.webView.scrollView.contentOffset = CGPointMake(0, 0);
self.webView.scrollView.size = CGSizeMake(self.webView.scrollView.contentSize.width,
self.webView.scrollView.contentSize.height - 5);
self.webView.scrollView.delegate = self;
[self addGestureRecognizer:self.tap];
[self.tap requireGestureRecognizerToFail:self.webView.scrollView.panGestureRecognizer];
}
問題是,敲擊手勢識別器只作品webView內容顯示在Web視圖中之前。內容出現後,只有Web視圖的滾動工作。
你有一些代碼可以顯示嗎?我會添加第二個手勢並使用'requireGestureRecognizerToFail'。 – Wain
我沒有任何代碼 - 我看不到如何開始處理此問題。我知道如何將手勢識別器添加到一般的視圖中,但在這裏我迷路了。假設我向單元格添加輕擊手勢。然後,我使用requireGestureRecognizerToFail,如何訪問滾動視圖的滑動手勢識別器以將其添加爲此方法的參數?我知道如何訪問scrollView.gestureRecognizers,但這沒有幫助。 – jac300