我在UITextView
检测到发言权时试图隐藏ARScene
。代码如下:
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的新手。
答案 0 :(得分:1)
这是因为renderer
在后台线程中运行。您需要在主线程中运行与ui相关的所有代码。
DispatchQueue.main.async {
myTextView.isHidden = true
}