您可以使用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上查看更多信息