首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在C4ios中禁用/切换手势?

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

Stack Overflow用户
提问于 2013-08-12 01:42:41
回答 1查看 169关注 0票数 1

阅读文档这里

我知道如何成功地为一个PAN设置C4Object手势。但是我如何禁用PAN手势呢?

用..。

代码语言:javascript
运行
复制
[object setUserInteractionEnabled:NO]

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

代码语言:javascript
运行
复制
object.gestureRecognizers = NO

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-12 05:10:49

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

要切换/关闭手势识别器,只需更改其enabled属性的值即可。

以下几点对我来说是可行的:

代码语言:javascript
运行
复制
#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

本示例的部分如下:

代码语言:javascript
运行
复制
    [square addGesture:PAN name:@"thePan" action:@"move:"];
    gesture = [square gestureForName:@"thePan"];

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

然后,每当我们通过触摸圆圈来切换时,我们做以下操作:

代码语言:javascript
运行
复制
gesture.enabled = !gesture.isEnabled;

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

您可以查看更多关于UIGestureRecognizer类引用的内容。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18178480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档