2017-09-26 10 views
2

iOS 11の他のジオメトリの後ろに隠れているジオメトリを検出するためにhitTest(オプションはありません)を取得できませんでした。直し方?hittestはios11の他の要素の後ろに隠れているジオメトリを検出しません - スウィフト

例: せhitResults = scnView.hitTest(場所、オプション:なし)

は、複数のノードを返すべきである - しかし、1つのノードしか返しません。

答えて

1

は私が修正を見つけることができた - と、ここでそれを共有し、他の誰かのために、多分その便利:

Appleはこの新しいsearchMode導入 - デフォルトでは「最も近い」 - あなたは古い振る舞いを得ることができますALL = 1

にsearchModeを設定する場合#available(IOSの11.0、*){ hitResults = scnView.hitTest(場所、オプション:[SCNHitTestOption.searchMode:1])}

2

いくつかの追加の詳細を追加 - 私の経験では、SceneKitのやり方で、iOS 10からiOS 11への大きな変更がありましたタッチを扱う。具体的には、上のBerndが指摘しているように、SceneKitのDEFAULT操作は、[ray]で触れられた最初のノードだけが[SCNHitTestResult]に返されるようになりました。

追加のコメントは、上記の解決策ではiOS 11デプロイメントターゲットが必要なため、iOS 10以前のバージョンとの下位互換性を期待している場合、動作させられないようです。だから、Appleはデフォルトの方法を変更しているようだが、それを元の方法で動作させたい場合は、[SCNHitTestOption.searchMode:1]のデフォルトを変更する必要があります。これは、/ iOS 11以上に(ありがとう、アップル)

Xcode 9/iOS 11のアップデートでiOS 10のデプロイメントを行う方法を模索していた時、私はそれを発見しました。 (注:iOSの10.3デプロイメント・ターゲットのビルドでこれらのシナリオをテストするとき、私はiOSの11に自分の携帯電話をアップグレードしていた)

  1. [SCNHitTestOption.firstFoundOnly:0]、iOSの10の展開で利用できる一方で、無視しているようです.searchModeも1に設定されていません.iOS 11が必要です。
  2. [SCNHitTestOption.categoryBitMask:]、iOS 10デプロイメントのavailは、.searchModeも1に設定されていないと無視されるようです...

私が知る限り、Appleはdevsに最新のOSへのアップグレードを強制する権限をすべて持っています無意識のうちに)、最終的なアプリのアップデートを得るためにエンドユーザにアップグレードしなければならないことを「奨励」する。

1

または、Objective Cの中... オプション:{:[のNSNumber numberWithInt:1] SCNHitTestOptionSearchMode} @

+0

これは私の頭痛の種を解決しました。 – exsulto

関連する問題