使用setEnabled禁用UIPinchGestureRecognizer:NO

时间:2012-01-20 19:29:47

标签: iphone uigesturerecognizer

我的滚动视图附加了一个捏手势识别器(一个在默认的一个上面)。我正在尝试启用它并在某些缩放级别禁用它但它无法正常工作。我使用命令:

[self.pinchGesture setEnabled:NO];
and
[self.pinchGesture setEnabled:YES];

启用和禁用捏合手势。我正在尝试调试它,并使用此代码打印出我的手势描述:

NSArray *gestures = [self.scrollView gestureRecognizers];
for (UIGestureRecognizer *gesture in gestures) {
    NSLog(@"%s, gesture: %@", __FUNCTION__, [gesture description]);
}

我看到我的自定义手势看起来像:

gesture: <UIPinchGestureRecognizer: 0x88a62d0; state = Possible; enabled = NO; view = <UIScrollView 0x880c360>; target= <(action=handlePinch

因此即使设置为enabled = NO,pinch仍会调用handlePinch:方法。是否有一个原因?或者我是否需要使用[self.scrollView setGestureRecognizers:<#(NSArray *)#>删除该捏合手势?如果我采用这种方法,我是否必须循环我的scrollView手势,保存对那些的引用,而不是设置那些,所以我没有设置我的自定义捏手势?感谢。

1 个答案:

答案 0 :(得分:0)

启用的scrollview就是这样做:启用和禁用scrollview。手势识别器是一种不同的动物,它们可以锁定在您的滚动视图中,但几乎可以独立运行。为什么不删除手势的目标而不是禁用,然后在启用时重新添加目标?或者,设置目标方法检查的布尔值,并在布尔值为YES时忽略手势。