【发布时间】:2018-10-31 02:12:47
【问题描述】:
我有一个 UI,其中 SCNView 在后台,WKWebView 在前台,显示为 .popover。视图由单独的视图控制器控制。当用户按下 铃铛按钮 时,WKWebView 就会出现(参见附加屏幕)。 SCNView 已启用标准相机控制。
当前,当 WKWebView 弹出窗口出现时,SCNView 变得无响应。 WKWebView 外部的点击手势将其关闭,其他手势将被忽略,因此当 WKWebView 弹出框可见时,用户无法控制 SCNView 摄像头。 当存在 WKWebVIew 弹出框时,如何使 SCNView 响应?如何仅在按下 铃铛按钮 时关闭 WKWebView?
下面使用的代码:
class MainVC: UIViewController, UIPopoverPresentationControllerDelegate {
@IBOutlet weak var scnView: SCNView!
@IBOutlet weak var bellBtn: UIButton!
var myWebViewVC: MyWebViewVC!
override func viewDidLoad() {
super.viewDidLoad()
let scene = SCNScene(named: "art.scnassets/DemoScene.scn")!
let scnView = sceneView
scnView!.scene = scene
scnView!.allowsCameraControl = true
}
@IBAction func onBellBtnPressed(_ sender: UIButton) {
myWebViewVC.modalPresentationStyle = .popover
myWebViewVC.popoverPresentationController?.delegate = self
present(myWebViewVC, animated: true, completion: nil)
myWebViewVC.popoverPresentationController?.sourceView = sender
myWebViewVC.popoverPresentationController?.sourceRect = sender.bounds
}
}
MyWebViewVC 只关心视图的大小。文件中没有实现额外的自定义修改。
【问题讨论】:
-
我不使用 SceneKit,但这似乎与 iOS 更相关,如 (1) 标准弹出框的工作原理和 (2) UI 相关处理需要如何在主线程中进行.在前者中,您可能通过创建自己的弹出框来解决此问题 - 它可能需要是“看起来”像弹出框的全屏视图。在不属于弹出框的区域中,您可以完全控制屏幕。在后者?我不确定你能做任何事情,除非你能做一些自动化的动画(这可能是不可能的)。
标签: ios swift user-interface scenekit