2012-05-10 38 views
1

我想添加一個UIPanGestureController到我的UITableView,所以我可以檢測用戶是手動平移還是隻給了一個初始踢並單獨觀看視圖滾動。原因是我想在滾動速度變慢時立即對齊一個單元格(想象一下幸運之輪)。當然,我不想在用戶手動平移時進行捕捉。UIGestureRecognizer同時setDelegate和動作

但是,我可以使用手勢控制器(並設置我的「正在手動滾動」變量「)或滾動視圖 使用TouchBegin事件代替手勢識別器引入了新問題,所以這不是一個真正的選項。

首先,我改變了表視圖包括UIGestureRecognizerDelegate。

初始化視圖後,然後我做...

panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panTableView:)]; 
[panGestureRecognizer setDelegate:self]; 
[self.view addGestureRecognizer:panGestureRecognizer]; 

我執行開始功能,設置BOOL:

- (BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)gestureRecognizer 
{ 
    isPanning = YES; 
    return NO; 
} 

總是返回NO應該確保在手勢識別是永遠活躍,因爲我想(和需要)使用表格視圖自己的滾動方法。

問題:我的行爲「panTableView」永遠不會被調用。 如果我不是設置委託,操作被調用,但我不能滾動,因爲手勢識別器捕捉我所有的觸摸。

我已經看過目標。在設置委託之後,手勢識別器的視圖和委託指針與self.view相同,該動作仍然以右選擇器爲目標。

回答

0

嘗試

- (BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)gestureRecognizer 
{ 
    isPanning = YES; 
    return YES; 
} 

和實現這個

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer 
{ 
    return YES 
} 
+2

的偉大工程。非常感謝! –

+0

沒問題!我喜歡幫助。 –