如何禁用触摸检测?

时间:2009-07-09 05:26:31

标签: iphone objective-c cocos2d-iphone

如何在正在运行的动作中禁用触摸检测,因为如果玩家在动作中单击并单击,我不希望角色像超人一样在天空中飞行,如果他们继续点击,角色将永远不会降落。 我发现方法“isDone”,是否与此方法有关? 玩家点击 - >行动(不能在行动中点击) - >动作结束 - >再次点击..... 这就是我想要的东西〜

8 个答案:

答案 0 :(得分:48)

这是您问题的最佳答案:

[[UIApplication sharedApplication] beginIgnoringInteractionEvents];

[[UIApplication sharedApplication] endIgnoringInteractionEvents];

答案 1 :(得分:45)

在视图中停用用户互动,直到操作完成,然后再次启用。

禁用触控

[self.view setUserInteractionEnabled:NO];

启用触控

[self.view setUserInteractionEnabled:YES];

请尝试下次再简洁一点。

答案 2 :(得分:2)

在Swift 2.2中

self.view.userInteractionEnabled = false

答案 3 :(得分:1)

只是假设你在谈论Cocos2D中的特定Action类。如果这是真的,那么你应该知道每个Action都有一个“isDone”Bool你可以检查它是否已经完成。让我知道,如果这就是你所要求的,我会发布一个例子,但是你很可能会谈论别的东西,因为你的措辞太混乱了;)

答案 4 :(得分:1)

Swift 3.0

self.view.isUserInteractionEnabled = false

答案 5 :(得分:0)

你总是可以在你想要“禁用”点击输入的区域顶部放置一个透明的UIView,让它听取点击,让它忽略它们。如果希望再次收听输入,请删除UIView(或隐藏它)。

答案 6 :(得分:0)

为什么不使用某种(简单版本)布尔值来记住ieInAction = true并且在操作完成后isInAction = false ...

所以当有人点击时,你会使用像

这样的东西
if (!isInAction) {
   isInAction=true;
   try {
     doYourAction;
   } catch {
     ...
   } finally {
     isInAction=false;
   }
}

//代码是某种伪代码,因为我还没有为iPhone编程,只是想象我的意思。

答案 7 :(得分:0)

也许我不明白你的问题,但这是你在寻找什么?

- (BOOL)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
  [Superman Fly];
  self.isTouchEnabled = NO;
}

- (void)SupermanLanded{
  self.isTouchEnabled = YES;
}