有关Linea Pro条形码扫描仪的多视图代表

时间:2013-04-04 09:30:05

标签: iphone ios objective-c barcode-scanner linea-pro

我正在使用Linea Pro硬件条形码扫描仪开展项目。为了开始使用,我使用了以下答案How do I use the Linea-Pro SDK for IOS?

我的应用程序包含一个导航控制器(带有两个条目的表)和两个连接的视图控制器(每个都使用扫描仪)。

我正在导航控制器的viewDidLoad中连接设备,如下所示:

dtdev=[DTDevices sharedDevice];
[dtdev connect];

在两个视图控制器中,我在viewDidLoad方法中注册设备,如下所示:

dtdev=[DTDevices sharedDevice];
[dtdev addDelegate:self];
[super viewDidLoad];

不幸的是,当我单击设备扫描按钮时,两个视图控制器的委托方法都会被调用,因为它们都注册了它。

为防止出现这种情况,我想在视图可见时将viewController设置为委托,因此我将 [dtdev addDelegate:self]; 放入 viewWillAppear 方法并在 viewWillDisappear 方法中放置 [dtdev removeDelegate:self]; 。之后,条形码扫描程序在调用removeDelegate后将不再工作,即使它是通过addDelegate再次添加的。

我没有看到另外一种方法,只是将两个视图控制器添加为委托,然后在委托方法中添加这样的代码:“我是否可见”? - >继续:否则休息; (但这是愚蠢的,对吗?)

这是一个错误还是我不直接思考?

2 个答案:

答案 0 :(得分:0)

我很惊讶添加/删除委托不起作用,听起来像个bug。如果你有一个导航控制器的例子只做那个,我建议把它发送到LineaPro。

您是否确定仍然设置了sharedDevice并且再次调用addDelegate时dtdev不是nil?

简单的解决方案可能正是您的想法。将其添加到两个代理的顶部(因为您使用的是导航控制器)。

  

if(self!= self.navigationController.visibleViewController)return;

答案 1 :(得分:0)

我有同样的问题,我通过添加解决了这个问题 另一:

[dtdev addDelegate:self];

viewDidAppear方法中。

我希望这会对你有所帮助。