【问题标题】:How can I disable the touch detection?如何禁用触摸检测?
【发布时间】:2010-11-09 06:33:49
【问题描述】:

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

【问题讨论】:

  • 说真的,什么?
  • 现在我也想做超人游戏。

标签: iphone objective-c cocos2d-iphone


【解决方案1】:

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

【讨论】:

  • 戴夫,你如何“禁用”点击?让它监听水龙头,然后忽略它们?
  • 按钮在这方面效率更高一些。要让它“不可见”,就让它不高亮,XIB选项是adjustsWhenHighlighted,但选项名称不同。 +1 苹果缺乏标准的命名方案!此方法对于禁用自定义 UI(通常是游戏)很方便
【解决方案2】:

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

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

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

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

【讨论】:

    【解决方案3】:

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

    禁用触摸

    [self.view setUserInteractionEnabled:NO];
    

    启用触摸

    [self.view setUserInteractionEnabled:YES];
    

    下次请尽量简洁一点。

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

          这是您问题的最佳答案:

          [[UIApplication sharedApplication] beginIgnoringInteractionEvents];
          
          [[UIApplication sharedApplication] endIgnoringInteractionEvents];
          

          【讨论】:

          • +1 对于违反直觉但非常有效的解决方案。
          【解决方案7】:

          在 Swift 2.2 中

          self.view.userInteractionEnabled = false
          

          【讨论】:

            【解决方案8】:

            斯威夫特 3.0

            self.view.isUserInteractionEnabled = false
            

            【讨论】:

              猜你喜欢
              • 2012-05-08
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-10-19
              • 2011-06-11
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多