我有一个静态单元格的表。其中一个单元有一个视图,上面有一个平移手势识别器。UIGestureRecognizer阻止tableview滚动
当我向下滚动我的tableview,当我到达与移动手势识别器视图中的单元格,滚动似乎并没有工作。如果我触摸视图外侧(侧面或顶部或底部),它可以工作,我可以滚动。我在我的gesturerecognizer中有一个if语句,用于测试是否触摸了某个区域,如果是,则执行一个动作。
我已经看过这个问题(http://stackoverflow.com/questions/3295239/uigesturerecognizer-blocking-table-view-滚动),但设置cancelsTouchesInView到NO没有工作,我没有任何设置状态属性和使用方法- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
我不知道从哪里获取'otherGestureRecognizer'或者调用该方法的对象。
我假设我wan't把我的手势识别器作为第一个参数,以及tableview中的滚动手势识别器作为otherGestureRecogniser,是正确的?如果是这样,我该如何得到它?
UIPanGestureRecognizer *windPanGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(moveWindHandle:)];
[self.windRangeView addGestureRecognizer:windPanGesture];
然后在我的moveWindHandle:
-(void)moveWindHandle:(UIPanGestureRecognizer *)gesture
{
gesture.cancelsTouchesInView = NO;
isMovingHandle = [self isPoint:startedTouchAt insideHandle:_toHandleWindImageView];
if(isMovingHandle) {
if(gesture.state == UIGestureRecognizerStateBegan) {
//do stuff
}
}
else
{
//i want it to ignore this gesture and just scroll like normal if that is what hte user did
}
}
我已经设置了tableviewcontroller为UIGestureRecognizerDelegate,但我不知道如何处理这一点。
我已经设置了'windPanGesture.delegate = self'但是这并没有完全解决这个问题。如果我从windRangeView外部启动滚动,然后从windRangeView内部继续它,它的工作原理。但是,如果tableview是静止的,并且我尝试从windRangeView中启动一个滚动,它不会执行滚动。 – Brentoe
完美,谢谢! -gestureRecognizerShouldBegin:在修复它后添加。 – Brentoe