如何从 ARScene 线程访问 UITextView?
How can I access to UITextView from an ARScene thread?
我试图在 ARScene
中检测到地板时隐藏 UITextView
。代码如下:
class ViewController: UIViewController, ARSCNViewDelegate {
...
@IBOutlet var sceneView: ARSCNView!
@IBOutlet weak var myTextView: UITextView!
// runs on floor detection
func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {
if anchor is ARPlaneAnchor {
myTextView.isHidden = true // Error from Main Thread Checker
}
}
...
}
但是,它不会隐藏 myTextView
,但会产生错误提示 UIView.hidden
必须仅从主线程使用 。我想知道正确的方法是什么。我是 Swift.
的新手
那是因为 renderer
运行s 在后台线程中。您需要在主线程中 运行 所有与 ui 相关的代码。
DispatchQueue.main.async {
myTextView.isHidden = true
}
我试图在 ARScene
中检测到地板时隐藏 UITextView
。代码如下:
class ViewController: UIViewController, ARSCNViewDelegate {
...
@IBOutlet var sceneView: ARSCNView!
@IBOutlet weak var myTextView: UITextView!
// runs on floor detection
func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {
if anchor is ARPlaneAnchor {
myTextView.isHidden = true // Error from Main Thread Checker
}
}
...
}
但是,它不会隐藏 myTextView
,但会产生错误提示 UIView.hidden
必须仅从主线程使用 。我想知道正确的方法是什么。我是 Swift.
那是因为 renderer
运行s 在后台线程中。您需要在主线程中 运行 所有与 ui 相关的代码。
DispatchQueue.main.async {
myTextView.isHidden = true
}