首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >popover下视图上的活动UI导航

popover下视图上的活动UI导航
EN

Stack Overflow用户
提问于 2018-05-21 20:05:51
回答 1查看 243关注 0票数 1

我有一个UI,其中SCNView在后台,WKWebView在前台以.popover的形式呈现。视图由单独的视图控制器控制。当用户按下铃声按钮时,WKWebView就会出现(见所附屏幕)。SCNView启用了标准摄像头控制。

目前,当WKWebView弹出窗口出现时,SCNView将变得无响应。轻拍WKWebView外部的手势会将其关闭,其他手势将被忽略,因此当SCNView弹出窗口可见时,用户无法控制WKWebView摄像头。如何在出现WKWebVIew弹出窗口时使SCNView响应?仅当按下时,我如何才能关闭?

使用的代码如下:

代码语言:javascript
复制
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只关心视图的大小。文件中不会实现任何其他自定义修改。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-04 07:51:48

好的。因此,解决方案主要与视图控制器的popoverPresentationController参数有关。这是documentation。要在呈现为.popover的视图下启用对视图的控制,您需要通知它将在出现popover时响应的视图。传球的顺序是从上到下。下面的代码和passThrough数组使其工作。

代码语言:javascript
复制
class MainVC: UIViewController, UIPopoverPresentationControllerDelegate {
    @IBOutlet weak var scnView: SCNView!
    @IBOutlet weak var bellBtn: UIButton!
    @IBOutlet weak var dotBtn: UIButton!
    var myWebViewVC: MyWebViewVC!    
    override func viewDidLoad() {
        super.viewDidLoad()
        let scene = SCNScene(named: "art.scnassets/DemoScene.scn")!
        scnView!.scene = scene
        scnView!.allowsCameraControl = true
    }
    @IBAction func onBellBtnPressed(_ sender: UIButton) {
        activeUiNavigationUnderPopover()
    }
    func activeUiNavigationUnderPopover () {
        myWebViewVC.modalPresentationStyle = .popover
        myWebViewVC.popoverPresentationController?.delegate = self
        if let pop = myWebViewVC.popoverPresentationController {

                var passthroughViews: [AnyObject]?
                    passthroughViews = [dotBtn, scnView]
                    pop.passthroughViews = NSMutableArray(array: passthroughViews!) as? [UIView]
                    pop.permittedArrowDirections = .any
                    pop.delegate = self
        }
        present(myWebViewVC, animated: true, completion: nil) 
        myWebViewVC.popoverPresentationController?.sourceView = sender
        myWebViewVC.popoverPresentationController?.sourceRect = sender.bounds
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50448541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档