【问题标题】:Prevent SKLabelNode from receiving Touches防止 SKLabelNode 接收触摸
【发布时间】:2014-04-01 18:01:56
【问题描述】:

我有许多以 SKLabelNodes 作为孩子的 SKSpriteNodes。我想要的是精灵节点范围内的任何触摸都由精灵节点处理,并且它的子节点(标签节点)完全忽略触摸。我试过这样做:

SKLabelNode *miles = [SKLabelNode labelNodeWithFontNamed:@"Verdana"];
miles.userInteractionEnabled = NO;

但这不起作用。当我将此属性设置为 NO 时,标签节点注册触摸。接下来我尝试对标签节点进行子类化并在 init 中设置 userInterationEnabled = NO,如下所示:

@implementation BBLabelNode

-(id)init {
    if (self = [super init]) {

        self.userInteractionEnabled = NO;

    }
    return self;
}

@end

遗憾的是,这也不起作用。所以我想知道:如何正确地导致标签注释完全不接收触摸

【问题讨论】:

  • 我会在 touchesBegan 中注销接收触摸的对象的描述,以查看实际对象是什么。可能是其他东西对触摸做出反应,而不是标签节点。
  • 您能展示一下您是如何检测这些触摸的吗?还有,你见过这个吗?它可能会有所帮助:github.com/iSofTom/STSpriteKit/blob/master/STSpriteKit/…

标签: ios sprite-kit sklabelnode


【解决方案1】:

只有 SKScene 默认将userInteractionEnabled 设置为YES。因此,如果您从未启用它们,则无需在您的对象上将 userInteractionEnabled 设置为 NO

仔细检查是否有其他东西(对象、节点、场景等)将标签的 userInteractionEnabled 设置为 YES

【讨论】:

  • 我发现这是一个非常有趣的建议。我可以告诉您,我熟悉所有代码,并且我知道代码中没有任何内容将我创建的任何标签节点的该属性设置为 YES。您是否建议在幕后将它们设置为 YES?
猜你喜欢
  • 2014-07-31
  • 2017-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-10
  • 1970-01-01
相关资源
最近更新 更多