从按钮调用zbar扫描程序时,应用程序冻结

时间:2016-04-18 20:30:37

标签: navigation hang drawer zbar

我有一个带导航抽屉的应用程序。导航抽屉有一个包含多个单元格的表格。当用户按下表格单元格时,该值将存储在单个单元格中,抽屉将关闭并显示主屏幕。

当主屏幕加载时,在viewDidLoad函数中,代码检查存储在单例中的值,如果有某个值,则调用zbar扫描程序。 但抽屉永远不会关闭它只是挂起。我可以从调试中看到,该值已传递给单例并在viewDidload函数中正确访问。

//这是viewDidLoad中的代码。 shareData是单例,varView存储在Navigation抽屉中选择的表的值。 “零打印到调试控制台但是有一个挂起         if(self.shareData.varView == 0)         {             打印( “零”)

        scanWaitingFunction()

    }

此外,当从主屏幕中按下按钮调用zbar扫描仪时,它可以正常工作。我试图从viewDidLoad函数以编程方式调用该按钮,但抽屉永远不会关闭,应用程序冻结。  @IBAction func scan(sender:AnyObject)     {     scanWaitingFunction() }

另外   func scanWaitingFunction()     {

     locked = true
    scanner()         //wait for the async method, the zbar scanner to complete before advancing
    while(locked){wait()}

        }
func wait()
{
    NSRunLoop.currentRunLoop().runMode(NSDefaultRunLoopMode, beforeDate: NSDate(timeIntervalSinceNow: 1))
}

2 个答案:

答案 0 :(得分:0)

我发现在导航抽屉关闭(swrevealcontroller)时调用视图控制器(zbar扫描仪)时不会出现问题。

导航抽屉打开时,会发生挂起

答案 1 :(得分:0)

通过在导航抽屉被解除并且呈现扫描仪视图控制器之间添加时间延迟来解决它

--prefix