• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

iOS 7 和 ZBarReaderView 启动需要很长时间

[复制链接]
菜鸟教程小白 发表于 2022-12-13 04:43:03 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我们正在使用 ZBarSDK 的 1.2 版(并尝试 1.3.1 测试版)在我们的应用中读取条形码。我们使用这段代码已经有一段时间了,在 iOS 5 和 6 中没有任何问题,但 iOS 7 似乎在初始化相机时出现了一些问题。当我们在 ZBarReaderView 中调用 start 方法时,初始化相机需要 30 到 60 秒甚至更长的时间。用户一直看到黑色的摄像头 View ,他们想知道应用程序是否正常工作。

View 初始化后,我们可以关闭它并重新打开它任意次数,没有问题,它会迅速打开。

这是我们代码的相关部分:

- (void)showAnimatedBOOL)animated
{
    [self.controller overlayWillShow:self];
    dispatch_async(dispatch_queue_create(0, 0), ^{[self.zBarReaderView start];});
    CGRect frame = self.superview.frame;
    frame.origin.y = -hiddenYOrigin;
    [UIView animateWithDuration:0.4 animations:^{
        self.superview.frame = frame;
    } completion:^(BOOL finished){
        if (((ScanController *)self.controller).scanMode == ScanModeManualEntry) {
            [self.manualEntryTextField becomeFirstResponder];
        }
        self.showing = YES;
        [self.controller overlayDidShow:self];
    }];
}

所有这些代码都快速执行,但是对 ZBarReaderView start 的 dispatch_queue_create 调用是我们被挂断很长时间的地方。

有什么想法吗?



Best Answer-推荐答案


您的问题可能与此有关(查看评论):

iOS7 : UIImageView Takes Forever to Appear

我们不知道 [self.zBarReaderView start] 实际执行了哪些命令,但 ZBarReaderView 的文档说:

This is a barcode reader encapsulted in a UIView.

如果它在 UIViews 中布置 subview ,那么在后台线程中调用“start”可能是不安全的,而在 iOS6 中它不再有效,因为内部结构发生了变化。

尝试在主线程中初始化摄像头,看看是否有效:

 dispatch_async(dispatch_get_main_queue(), ^{[self.zBarReaderView start];});

关于iOS 7 和 ZBarReaderView 启动需要很长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19368124/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap