hittest没有检测到隐藏在ios11中其他几何图形中的几何图形 - swift

问题描述:

我无法使用hitTest(无选项)来检测隐藏在iOS 11中其他几何图形背后的几何图形。我的代码在iOS 10上运行良好。任何人都知道怎么修?hittest没有检测到隐藏在ios11中其他几何图形中的几何图形 - swift

实施例: 让hitResults = scnView.hitTest(位置,选择:无)

应该返回几个节点 - 但并只返回一个节点。

我能找到一个解决 - 和将在这里分享,也许它有用别人:

苹果推出新搜索模式 - 这是默认的“最接近” - 你可以用旧的行为设定搜索模式到ALL = 1

如果#available(iOS的11.0,*){ hitResults = scnView.hitTest(位置,选择:[SCNHitTestOption.searchMode:1]) }

添加一些附加细节 - 根据我的经验,以SceneKit的方式从iOS 10到iOS 11发生了重大变化处理触摸。具体而言,正如Bernd在上面所述,SceneKit中的DEFAULT操作现在只在“ray”中触摸的第一个节点在[SCNHitTestResult]中返回。

额外的评论是,如果你希望向后兼容iOS 10或之前的版本,我似乎无法让它工作,因为上面提到的解决方案需要iOS 11 Deployment Target。因此,Apple似乎已经改变了触摸处理的默认方式,并且如果您希望它以原始方式工作,则必须更改[SCNHitTestOption.searchMode:1]的默认值,该值仅在更改部署目标时/到iOS 11或更高版本。 (谢谢苹果)

下面是我发现的一些进一步的古怪,因为我搜索了一种方法来使用Xcode 9/iOS 11更新进行iOS 10部署工作。 (注:测试这些场景与iOS的10.3部署目标构建的时候我已经升级我的手机到iOS 11):0 SCNHitTestOption.firstFoundOnly],同时可与iOS部署10,似乎如果被忽略

  1. 的.searchMode不是也设置为1,这需要iOS 11
  2. 类似的[SCNHitTestOption.categoryBitMask:],虽然与iOS 10的部署,如果.searchMode也不会被设置为1 ...

据我所知,底线是苹果公司竭尽全力迫使开发人员升级到最新的操作系统(无论是有意或无意的无意中),然后“鼓励”最终用户必须升级才能获得最新的应用更新。

或者在目标C ... 选项:@ {SCNHitTestOptionSearchMode:[NSNumber的numberWithInt:1]}

+0

这解决了我的头痛。 – exsulto