20

如何在运行的动作中禁用触摸检测,因为如果玩家在动作中单击并单击,我不希望角色像超人一样在天空中飞行,如果他们继续单击,角色将永远不会着陆。我找到了方法“isDone”,这和这个方法有关吗??玩家点击->动作(不能在动作中点击)->动作完成->再次点击.....这就是我想要的~

4

8 回答 8

49

这是您问题的最佳答案:

[[UIApplication sharedApplication] beginIgnoringInteractionEvents];

[[UIApplication sharedApplication] endIgnoringInteractionEvents];
于 2009-10-09T10:53:59.920 回答
45

在您的视图中禁用用户交互,直到操作完成,然后再次启用它。

禁用触摸

[self.view setUserInteractionEnabled:NO];

启用触摸

[self.view setUserInteractionEnabled:YES];

下次请尝试更简洁地说明您想要的内容。

于 2009-07-09T05:57:41.633 回答
2

在斯威夫特 2.2

self.view.userInteractionEnabled = false
于 2016-05-24T11:31:50.767 回答
2

斯威夫特 3.0

self.view.isUserInteractionEnabled = false
于 2017-02-06T11:23:31.370 回答
1

只是假设您正在谈论 Cocos2D 中的特定 Action 类。如果这是真的,那么您应该知道每个动作都有一个“isDone”布尔值,您可以检查它是否已完成。让我知道这是否是您要问的,我会发布一个示例,但是您很有可能在谈论其他内容,因为您的措辞令人困惑;)

于 2009-07-26T03:44:09.563 回答
0

也许我不明白你的问题,但这就是你要找的吗?

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

- (void)SupermanLanded{
  self.isTouchEnabled = YES;
}
于 2009-07-15T08:38:58.820 回答
0

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

于 2009-07-09T05:38:37.647 回答
0

为什么不使用某种(简单版本)布尔值来记住,即 isInAction = true 和动作完成后 isInAction = false ...

所以当有人点击时,你会使用类似的东西

if (!isInAction) {
   isInAction=true;
   try {
     doYourAction;
   } catch {
     ...
   } finally {
     isInAction=false;
   }
}

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

于 2009-07-09T05:39:45.240 回答