我有一个包含静态单元格的表格。其中一个单元格上有一个带有平移手势识别器的视图。
当我向下滚动我的表格视图时,当我到达带有平移手势识别器的视图的单元格时,滚动似乎不起作用。如果我在视图之外触摸(到侧面、顶部或底部),它就会起作用,我可以滚动。我在我的手势识别器中有一个if语句,它测试某个区域是否被触摸,如果是,则执行一个操作。
我已经研究过这个问题(http://stackoverflow.com/questions/3295239/uigesturerecognizer-blocking-table-view-scrolling),但是将cancelsTouchesInView设置为NO不起作用,我无法在任何地方设置状态属性并使用- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer方法,我不知道从哪里获取'otherGestureRecognizer‘,也不知道在哪个对象上调用该方法。
我假设我不会将我的手势识别器作为第一个参数,并将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,但我不知道如何处理它。
发布于 2012-10-10 20:01:33
你不会是那个打电话给-gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:的人。该方法由系统调用。您需要将表视图控制器设置为窗口平移手势的代理。
windPanGesture.delegate = self;此时,当您执行pan时,系统将调用委托方法-gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:,并将您的手势识别器作为一个参数,滚动视图的手势识别器作为另一个参数。
更新
您可能还希望实现-gestureRecognizerShouldBegin:方法,如果您不在某个特定区域中,则返回NO。
https://stackoverflow.com/questions/12818215
复制相似问题