我如何禁用touchesBegan:多点触摸?

时间:2013-02-11 21:52:26

标签: objective-c cocoa-touch touch multi-touch

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

我目前正在

中获得一个对象
touches 

当我同时用两根手指敲击时(按住选项键并点击模拟器)。我相信这是因为我没有启用

multipleTouchEnabled 

附加视图的属性。我想这样做,以便我不会为多次触摸注册此事件。

调查问题,如果启用multipleTouchEnabled,它似乎会起作用,然后执行

if ([touches count] > 1) {
    return;
}

在我的

touchesBegan:

然而,这对我来说似乎很奇怪,因为我正在启用multipleTouchEnabled以禁用多个触摸,并担心是否会有副作用。有没有更好的方法来解决我的问题?

5 个答案:

答案 0 :(得分:2)

您应该只能在视图上禁用多点触控属性,在IB中您必须实际转到侧面板并单击文件所有者旁边的视图以获取它,然后取消选中它,或者你可以在viewdidload中的代码中完成它:

self.view.multiTouchEnabled = NO;

答案 1 :(得分:1)

首先在您的视图中添加手势识别器:

UITapGestureRecognizer *multipleTouches = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleMultiTap:)];
multipleTouches.numberOfTouchesRequired = 2;
[yourViewName addGestureRecognizer:multipleTouches];
[multipleTouches release];

希望它会对你有所帮助。

答案 2 :(得分:0)

您可以使用手势识别器,即使您的代码有效,这可能比触摸委托更具说明性:

UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(myAction:)];
gestureRecognizer.numberOfTouchesRequired = 2;

答案 3 :(得分:0)

如果必须使用NSTouches,那么您可以使用以下方法来实现所需的任务。

[view setMultipleTouchEnabled:NO];
[view setExclusiveTouch:YES];

你可以玩

  

setMultipleTouchEnabled:

保持

  

查看setExclusiveTouch为YES

答案 4 :(得分:0)

您可以使用此行来避免某个点的多次触摸,为您的视图设置独占触摸“是”。

[self.view setExclusiveTouch:YES];