如何在C4ios中禁用/切换手势?

时间:2013-08-12 01:42:42

标签: objective-c uigesturerecognizer c4

阅读文档here

我知道如何为PAN成功设置C4Object手势。我如何禁用PAN手势?

使用...

[object setUserInteractionEnabled:NO]

...禁用所有手势,包括TAP个事件和......

object.gestureRecognizers = NO

...不允许我重新初始化PAN手势。

如果有人可以与我分享如何禁用PAN手势(切换PAN开启/关闭)而不影响其他手势事件,我们将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以使用gestureForName:方法访问添加到对象的手势,该方法返回UIGestureRecognizer个对象。从那里,您可以与该手势识别器进行交互并直接更改其属性。

要打开/关闭手势识别器,您只需更改其enabled属性的值。

以下适用于我:

#import "C4WorkSpace.h"

@implementation C4WorkSpace {
    UIGestureRecognizer *gesture;
    C4Shape *square, *circle;
}

-(void)setup {
    square = [C4Shape rect:CGRectMake(0, 0, 100, 100)];
    square.center = self.canvas.center;

    circle = [C4Shape ellipse:square.frame];
    circle.center = CGPointMake(square.center.x, square.center.y + 200);
    [self listenFor:@"touchesBegan" fromObject:circle andRunMethod:@"toggle"];

    [self.canvas addObjects:@[square, circle]];

    [square addGesture:PAN name:@"thePan" action:@"move:"];
    gesture = [square gestureForName:@"thePan"];
}

-(void)toggle {
    gesture.enabled = !gesture.isEnabled;
    if(gesture.enabled == YES) square.fillColor = C4GREY;
    else square.fillColor = C4RED;
}

@end

此示例的部分如下:

    [square addGesture:PAN name:@"thePan" action:@"move:"];
    gesture = [square gestureForName:@"thePan"];

注意,在实现中有一个名为UIGestureRecognizer的{​​{1}}变量。我们在第二行上执行的操作是找到与gesture对象关联的PAN手势并保留对它的引用。

然后,每当我们通过触摸圆圈进行切换时,我们会执行以下操作:

square

也就是说,如果手势已启用,则禁用它(反之亦然)。

您可以在UIGestureRecognizer Class Reference

上查看更多内容