好像UIResponder与UIView交织在一起。但是,Sprite Kit具有从UIResponder继承的SKNode类,因此它可以处理触摸事件。

如果您自己创建基于节点的游戏引擎:是否可以创建自己的UIResponder子类,以便OpenGL渲染的对象可以响应类似于UIView层次结构的触摸事件?

触摸事件如何进入UIResponder子类?

最佳答案

我不认为以实现SKNode的方式实现这种可能性。没有用于将自定义UIResponder子类插入响应者链的 public API。

有关如何将UIResponder子类正确插入响应者链的详细信息,请参见ricksters答案。确保覆盖子节点中的- (UIResponder *)nextResponder以返回您的自定义视图类,以便响应者链仍然正确。

一种可能是为每个GL对象创建一个UIControl,并使其位置保持同步。通过将这些控件添加为顶级GL视图的子视图,它们将被插入响应者链并接收触摸。另一种可能性是在顶级视图中处理触摸,然后在其中执行点击测试,以确定哪个GL节点与触摸相交。

09-04 05:06