web-dev-qa-db-ja.com

'hottest()'はiOS 14.0で推奨されていませんでした

私はこれに新しく、現在AR関連のアプリケーションを構築しています。

let results = self.hitTest(screenPosition, types: [.featurePoint])
 _

そして今、私はiOS 14.0でHitTestが推奨されている問題があります。

hitTest(_:types:)' was deprecated in iOS 14.0: Use [ARSCNView raycastQueryFromPoint:allowingTarget:alignment]
 _

その修復方法について教えてください、ありがとう:)

6
Zaky Putra

はい、raycastQuery(from:allowing:alignment:)を使用

このようにしてXcodeによって示唆されるように:

...
let location = gesture.location(in: sceneView)
guard let query = sceneView.raycastQuery(from: location, allowing: .existingPlaneInfinite, alignment: .any) else {
   return
}
        
let results = sceneView.session.raycast(query)
guard let hitTestResult = results.first else {
   print("No surface found")
   return
}
...
 _
1
Peter Karena

名前のノードを割り当ててから、hitTest(point:, options:[SCNHitTestOption : Any]?)touchesBeganの_を使用できます。以下は、私が使用したコードです。

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    if let touch = touches.first {
        let touchLocation = touch.location(in: sceneView)
        let results = sceneView.hitTest(touchLocation, options: [SCNHitTestOption.searchMode : 1])
        
        for result in results.filter({$0.node.name != nil}) {
            if result.node.name == "planeNode" {
                print("touched the planeNode")
            }
        }
    }
}
 _
0