【问题标题】:How to stop capture session when it is inside the Collection View Cell in iOS , Swift如何在 iOS、Swift 的 Collection View Cell 中停止捕获会话
【发布时间】:2019-03-28 06:22:55
【问题描述】:

我在 iOS 中使用 (AVFoundation) AVCapture Session 实现了一个 QR 阅读器。在我的 ParentViewController 中,我实现了一个 CollectionView。在 collection view cell 内我已经实现了 QR 码阅读器 并且我开始捕获会话开始在单元内运行。它工作正常并读取元数据输出。当元数据输出委托调用时,我停止会话。但是如果我离开 ParentView 控制器,捕获会话仍在运行,当我导航到另一个 ViewController 时,它会从后台捕获会话。为什么会这样?当导航到另一个视图控制器时,如何停止捕获会话。

这是层次结构,

ParentViewController --->(inside)CollectionView --->(inside) CollectionViewCell --->(inside) QR Reader with capture session Strat.

会发生什么,

ParentViewController ----> (navigate to another controller) Capture Session Still Activated and reads qr codes from background 

我想要什么,

ParentViewController ---->(navigate to another controller) Shouldn't capture anything.

我在 ParentViewController 中尝试过,在 viewWillDisappear 里面

    override open func viewWillDisappear(_ animated: Bool) {
            super.viewWillDisappear(animated)

         let qrreaderCell = QRReaderCell()
         qrreaderCell.captureSession.stopRunning()
         ColletionView.reloadItems(at: [IndexPath(row: 0, section: 0)])
        }

但没有工作并且失败了。任何人都可以帮助解决这个问题。

【问题讨论】:

    标签: ios swift avfoundation avcapturesession


    【解决方案1】:

    您正在创建QRReaderCell 的新实例。

    let qrreaderCell = QRReaderCell()
    qrreaderCell.captureSession.stopRunning()
    

    无需创建新实例,只需访问包含 QRReader 的当前单元格。

    let qrreaderCell = collectionView.cellForItem(at: IndexPath(row: 0, section: 0))
    qrreaderCell.captureSession.stopRunning()
    

    并确保您的viewWillDisappear 被调用。如果没有,您可以在导航到另一个视图控制器之前立即停止捕获会话。 只需在你 push 或 segue 到另一个 viewController 之前停止捕获会话。

    【讨论】:

      【解决方案2】:

      似乎更有可能存在一个保留周期,但如果不查看您的单元配置代码就很难判断。

      要停止现有会话,您应该迭代您的集合视图并在任何已经存在的单元格上停止会话。您可以在 viewDidDisappear 中执行此操作(您的方法创建了一个新单元格,无论如何都会在方法结束时发布)

      如果您发布单元类和控制器类代码,它可能会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多