2012-07-31 73 views
0

我可以使用ZXing图书馆,并在我的iPhone应用程序的背景中扫描QR代码?我不希望相机与正在寻找qr码和取消按钮的正方形重叠(如ScanTest示例中所示)。我需要的是按下扫描按钮将激活QR码的阅读,并且当阅读QR码时,如何将文本返回给我的应用程序,以便我可以将它显示在屏幕上的UILabel中。Zxing图书馆iPhone版

任何人都可以在Objective-C中显示一些示例代码吗?谢谢。

回答

1

我做了类似的事情,可以为您提供一些指导,但不能共享源代码。

看看ZXingWidgetController.mm,.h文件。这是一个全功能的QRcode扫描应用程序,您可以编译,因此可以将其反编译为仅包含后端代码。编辑.h,以便类扩展NSObject而不是UIViewController,然后删除GUI对象的任何类属性和实例变量。

这将导致xcode在.mm文件(willAppear等)中找到并标记不再需要的所有方法和变量,并带有警告/错误。大部分代码可以被删除,但要注意将分配/释放移动到构造器/解构器。

在viewController中,您可以创建该类的一个实例,并调用该类来开始扫描。您需要修改ZXingWidgetController.mm文件中的didDecodeImage,以便在QR码成功获取结果时执行您想要的操作。一种可能是修改构造函数以将父视图控制器作为参数,将其作为参数存储在实例变量中(__weak),然后使用它在didDecodeImage方法中调用其某个函数。其他人可能会使用通知将数据传回给主代码。

希望这会有所帮助!

+0

感谢您的快速响应。所以使它成为一个NSObject,将阻止相机覆盖和应用程序中的其他UI元素?或者必须明确删除? – jaamun 2012-07-31 20:16:43

+0

我想我明白了。所以使它成为一个对象允许我实例化它,并使用它内部的方法来进行QR扫描,对吧?然后我不需要删除任何代码(对于GUI对象和视图渲染) - 是吗? – jaamun 2012-07-31 20:18:59

+0

NSObject是一个通用对象,与UIViewController不同,它不包含继承的视图。我建议删除代码体中的GUI对象的任何代码,因为任何子视图将不再具有父视图,因为继承的视图不再存在。通过将它重新归类为NSObject,xcode会给你一个你需要删除的东西的好主意,因为任何对类/视图类的调用都会有编译错误,因为那些继承的方法不再存在。 – 2012-07-31 20:34:22

0

zxing objc directory中有一组类在CA级别上运行,而不是UIView级别,比在UIViewController级别运行的小部件更容易修改。

虽然这仍然需要稍微调整,因为核心捕获代码会跟踪视图是否在屏幕上,以便自动启动和停止捕获帧。

+0

嗯,我想我也会看看。谢谢 – jaamun 2012-08-01 14:49:22