Iphone 同时具有setDelegate和action的UIgestureRecognitor

Iphone 同时具有setDelegate和action的UIgestureRecognitor,iphone,ios,xcode,uitableview,uigesturerecognizer,Iphone,Ios,Xcode,Uitableview,Uigesturerecognizer,我正在尝试将UIPanGestureController添加到我的UITableView中,这样我就可以检测用户是在手动平移,还是他们只是进行了初始调整,并观察视图本身的滚动。原因是我想在滚动速度减慢时立即捕捉到一个单元格(想象一下命运之轮)。当然,我不想在用户手动平移时捕捉 但是,我可以使用手势控制器(并相应地设置“正在手动滚动”变量)或滚动视图。 使用TouchBegin事件而不是手势识别器会带来新的问题,因此这不是一个真正的选项 首先,我更改了表视图以包含UIgestureRecognit

我正在尝试将UIPanGestureController添加到我的UITableView中,这样我就可以检测用户是在手动平移,还是他们只是进行了初始调整,并观察视图本身的滚动。原因是我想在滚动速度减慢时立即捕捉到一个单元格(想象一下命运之轮)。当然,我不想在用户手动平移时捕捉

但是,我可以使用手势控制器(并相应地设置“正在手动滚动”变量)或滚动视图。 使用TouchBegin事件而不是手势识别器会带来新的问题,因此这不是一个真正的选项

首先,我更改了表视图以包含UIgestureRecognitzerDelegate

初始化视图后,我将执行

panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panTableView:)];
[panGestureRecognizer setDelegate:self];
[self.view addGestureRecognizer:panGestureRecognizer];
我执行Begin函数,以设置布尔值:

- (BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)gestureRecognizer
{
  isPanning = YES;
  return NO;
}
始终返回NO应该确保手势识别器从不处于活动状态,因为我希望(并且需要)使用表视图自己的滚动方法

问题:我的操作“panTableView”从未被调用。 如果我没有设置代理,则会调用动作,但我无法滚动,因为手势识别器会捕捉我的所有触摸

我已经查看了目标。设置代理后,手势识别器的视图和代理指针与self相同。视图中,操作仍然使用正确的选择器以self为目标。

试试看

- (BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)gestureRecognizer
{
  isPanning = YES;
  return YES;
}
并加以实施

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

很好,非常感谢!