【问题标题】:How do I disable/toggle gestures in C4ios?如何在 C4ios 中禁用/切换手势?
【发布时间】:2013-08-12 01:42:41
【问题描述】:

阅读文档here

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

使用...

[object setUserInteractionEnabled:NO]

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

object.gestureRecognizers = NO

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

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

【问题讨论】:

    标签: objective-c uigesturerecognizer c4


    【解决方案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
    

    这个例子的key部分如下:

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

    注意,在实现中有一个名为UIGestureRecognizer 的变量gesture。我们在第二行所做的是找到与square 对象关联的PAN 手势并保留对它的引用。

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

    gesture.enabled = !gesture.isEnabled;
    

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

    您可以在UIGestureRecognizer Class Reference上查看更多信息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-22
      相关资源
      最近更新 更多