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

Objective c 如何在C4ios中禁用/切换手势?,objective-c,uigesturerecognizer,c4,Objective C,Uigesturerecognizer,C4,阅读文档 我知道如何为c4对象成功设置PAN手势。如何禁用PAN手势 使用 [object setUserInteractionEnabled:NO] 。。。禁用所有手势,包括轻触事件和 object.gestureRecognizers = NO 。。。不允许我重新初始化PAN手势 如果有人能与我分享如何在不影响其他手势事件的情况下禁用PAN手势(切换PAN开/关),我将不胜感激。您可以使用gestureForName:方法访问添加到对象中的手势,它返回一个UIgestureRecogni

阅读文档

我知道如何为
c4对象成功设置
PAN
手势。如何禁用
PAN
手势

使用

[object setUserInteractionEnabled:NO]
。。。禁用所有手势,包括轻触事件和

object.gestureRecognizers = NO
。。。不允许我重新初始化
PAN
手势


如果有人能与我分享如何在不影响其他手势事件的情况下禁用
PAN
手势(切换
PAN
开/关),我将不胜感激。

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

要打开/关闭手势识别器,只需更改其
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"];
gesture.enabled = !gesture.isEnabled;
请注意,在实现中有一个名为
手势的
UIGestureRecognitor
变量。我们在第二行中所做的是找到与
square
对象关联的
PAN
手势,并保留对它的引用

然后,无论何时通过触摸圆进行切换,我们都会执行以下操作:

    [square addGesture:PAN name:@"thePan" action:@"move:"];
    gesture = [square gestureForName:@"thePan"];
gesture.enabled = !gesture.isEnabled;
也就是说,如果该手势已启用,则将其禁用(反之亦然)


您可以在

上查看更多信息。您可以使用
gestureForName:
方法访问添加到对象的手势,该方法返回一个
uigestureignizer
对象。从那里,您可以与该手势识别器交互并直接更改其属性

要打开/关闭手势识别器,只需更改其
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"];
gesture.enabled = !gesture.isEnabled;
请注意,在实现中有一个名为
手势的
UIGestureRecognitor
变量。我们在第二行中所做的是找到与
square
对象关联的
PAN
手势,并保留对它的引用

然后,无论何时通过触摸圆进行切换,我们都会执行以下操作:

    [square addGesture:PAN name:@"thePan" action:@"move:"];
    gesture = [square gestureForName:@"thePan"];
gesture.enabled = !gesture.isEnabled;
也就是说,如果该手势已启用,则将其禁用(反之亦然)

你可以在网上查看更多信息