У меня есть контроллер навигации, содержащий контроллер корневого представления, который содержит одну кнопку UIB.Нажатие на кнопку помещает другой контроллер представления в стек.Этот второй контроллер представления содержит ARKit sceneView (ARSCNView).Внутри сцены я добавляю узел, используя SCNPlane, и устанавливаю диффузное содержимое материала плоскости, чтобы использовать вид, поддерживаемый контроллером вида, следующим образом:
import UIKit
import SceneKit
import ARKit
class SceneViewController: UIViewController {
@IBOutlet weak var sceneView: ARSCNView!
override func viewDidLoad() {
super.viewDidLoad()
setupScene()
}
func setupScene() {
sceneView.scene = SCNScene()
let configuration = ARWorldTrackingConfiguration()
sceneView.session.run(configuration, options: [.resetTracking, .removeExistingAnchors])
// add a small plane at the origin...
let plane = SCNPlane(width: 0.1, height: 0.1)
// create a view controller, and add use its view as the plane's material contents...
let vc = UIViewController()
vc.view.backgroundColor = UIColor.red
plane.firstMaterial?.diffuse.contents = vc.view
let node = SCNNode(geometry: plane)
sceneView.scene.rootNode.addChildNode(node)
}
}
Когда я выталкиваю этот контроллер вида (используя либокнопка «Назад» или жест панорамирования), контроллер корневого представления перестает реагировать на события касания.
Поворот устройства в горизонтальное положение, а затем возврат в портрет, кажется, освобождает все, что вызывает такое поведение
Я попытался переопределить touchCegan на контроллере корневого представления, но он не срабатывает.
Я попытался заставить окно стать первым респондентом.
Я гарантировалчто SceneViewController уничтожается и что сеанс sceneView после запуска контроллера представления еще не запущен.
Эта проблема не возникает при использовании UIView или UIImage, сгенерированных из контроллера представления содержимого.представление, но это будет означать, что с ним нельзя взаимодействовать.
Вот ссылка на СэмПле проект.Его необходимо запустить на устройстве с поддержкой ARKit: https://github.com/duncanlowrie/vc-node-test