1

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

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

首先,我更改了表格视图以包含 UIGestureRecognizerDelegate。

初始化视图后,我然后...

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

我实现了 Begin 函数,以设置一个 BOOL:

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

总是返回 NO 应该确保手势识别器永远不会处于活动状态,因为我想要(并且需要)使用表格视图自己的滚动方法。

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

我已经调查了目标。设置代理后,手势识别器的视图和代理指针与 self.view 相同,动作仍然以右选择器为目标。

4

1 回答 1

0

尝试

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

并实施这个

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
  return YES
}
于 2012-05-10T13:17:47.493 回答