Ios SKSpriteNode子类和事件

Ios SKSpriteNode子类和事件,ios,sprite-kit,Ios,Sprite Kit,我不明白为什么如果我将实现UIResponder协议的SKSpriteNode子类化,那么与触摸相关的方法就永远不会被调用 例如,这是一个非常简单的类,我将其用作测试: //INTERFACE ---------------- #import <SpriteKit/SpriteKit.h> @interface TestClass : SKSpriteNode @end //IMPLEMENTATION ----------- #import "TestClass.h" @i

我不明白为什么如果我将实现UIResponder协议的SKSpriteNode子类化,那么与触摸相关的方法就永远不会被调用

例如,这是一个非常简单的类,我将其用作测试:

//INTERFACE ----------------
#import <SpriteKit/SpriteKit.h>

@interface TestClass : SKSpriteNode

@end

//IMPLEMENTATION -----------
#import "TestClass.h"

@implementation TestClass


- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
     NSLog(@"oook");
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{}
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event{}

@end
//接口----------------
#进口
@接口测试类:SKSpriteNode
@结束
//实施-----------
#导入“TestClass.h”
@实现测试类
-(无效)触摸开始:(NSSet*)触摸事件:(UIEvent*)事件{
NSLog(@“ook”);
}
-(void)touchesMoved:(NSSet*)toucheevent:(UIEvent*)event{}
-(void)touchesend:(NSSet*)toucheevent:(UIEvent*)event{}
-(void)touchscancelled:(NSSet*)触碰事件:(UIEvent*)事件{}
@结束
如果我将该类的实例附加到场景,触摸对象。。。什么也没发生


我忘了什么吗

我刚刚看到SKNode的参数
userInteractionEnabled
默认值等于
NO
。只需将其设置为
YES
,即可使代码正常工作

但是如果它被一个没有启用交互功能的精灵覆盖,那么覆盖精灵会吞下触摸…@Smick,你的意思是如果覆盖精灵有userinteractionEnabled=YES,那么可以点击“通过”覆盖精灵吗?我刚刚试过这个,覆盖精灵有没有启用userinteractionEnabled似乎并不重要,它将阻止触摸下面的精灵。我很想找到一种绕过这种行为的方法,因为我希望透明云在前边移动。我看到你看到了另一篇文章,但如果你尝试我的答案,你可以看到场景可以在该点循环通过所有节点,因此覆盖的精灵将检测到命中!但是实际的节点beginTouch没有被调用。@AndreyGordeev使按钮呈现在“覆盖”精灵的顶部,这违背了拥有覆盖精灵的目的,因为它不再覆盖。我偶然写了一篇关于这件事的帖子,并把我的解决方案写在要点上。我不知道自己写的博客文章的链接是否可以:)