Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/97.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 二维码和条形码扫描器代码不工作Xcode 5.1_Ios_Iphone_Objective C_Zbar Sdk - Fatal编程技术网

Ios 二维码和条形码扫描器代码不工作Xcode 5.1

Ios 二维码和条形码扫描器代码不工作Xcode 5.1,ios,iphone,objective-c,zbar-sdk,Ios,Iphone,Objective C,Zbar Sdk,我已经完成了这个教程 我在IOS SDK 7.1、Xcode 5.1.1、Mac OSX 10.9.4和objective c上使用iPhone模拟器。当我运行程序时,应该发生的情况如下: 1我单击第一次出现的窗口上的扫描按钮 2我可以在iPhone相册中选择要扫描的图像 3我选择一个二维码或条形码 它扫描条形码 5它确定值并将其与扫描图像的小版本一起显示在屏幕上 实际发生的情况是,到了第4步,扫描图像的方法运行到完成开始扫描。但是,它没有执行步骤5,而是在屏幕上显示了一个巨大的条形码版本,执行

我已经完成了这个教程

我在IOS SDK 7.1、Xcode 5.1.1、Mac OSX 10.9.4和objective c上使用iPhone模拟器。当我运行程序时,应该发生的情况如下:

1我单击第一次出现的窗口上的扫描按钮

2我可以在iPhone相册中选择要扫描的图像

3我选择一个二维码或条形码

它扫描条形码

5它确定值并将其与扫描图像的小版本一起显示在屏幕上

实际发生的情况是,到了第4步,扫描图像的方法运行到完成开始扫描。但是,它没有执行步骤5,而是在屏幕上显示了一个巨大的条形码版本,执行步骤5的方法从未被称为didFinishPickingMediaWithInfo

ViewController.h的内容

//
//  ViewController.h
//  BarCodeScannerDemo
//
//  Created by RDC on 3/11/13.
//  Copyright (c) 2013 RDC World. All rights reserved.
//

#import <UIKit/UIKit.h>
#import "ZBarSDK.h"

@interface ViewController : UIViewController<ZBarReaderDelegate>

@property (weak, nonatomic) IBOutlet UIImageView *resultImageView;
@property (weak, nonatomic) IBOutlet UITextView *resultTextView;
- (IBAction)startScanning:(id)sender;

@end
我花了很多时间试图找到一个解决方案,但我没有找到任何能提供解决方案的东西。我见过的唯一一个像我一样有问题的人是在教程页面的评论部分,但他们从未得到回复

请帮忙

编辑:

显示的图像以90度旋转。另外,我对objective c还不熟悉,所以如果您提供代码,请解释为什么差异会产生影响。我想提高我的知识=

编辑:解决方案

由于我在提问后8小时内无法回答自己的问题,我发现:

在这里阅读关于ZBarReaderViewController的ZBarSDK API参考资料后:

它说,这是一个控制器,用于从自动捕获的摄像机馈送进行实时扫描。有关从图像文件扫描或手动捕获的信息,请参阅ZBarReaderController

这意味着startScanning方法中的ZBarReaderViewController对象设置不是应该存在的。嗯,不是用来扫描静态图像的。我将不得不用实际的设备而不是Mac来测试原始代码,但似乎ZBarReaderController才是我真正想要的

新的StartScaning方法现在如下所示:

- (IBAction)startScanning:(id)sender
{
    resultTextView.text = @"Scanning..";

    //Create a reader
    ZBarReaderViewController *codeReader = [ZBarReaderController new];
    //Setup a delegate to recieve the results
    //The delegate implements the ZBarReaderDelegate protocol, which inherits from UIImagePickerControllerDelegate
    codeReader.readerDelegate= self;

    [codeReader.scanner setSymbology: ZBAR_I25 config: ZBAR_CFG_ENABLE to: 0];

    [self presentViewController:codeReader animated:YES completion:nil];

}
在测试时,我注意到教程网站上提供的带有透明背景的图像(如二维码和条形码图像)不起作用-你会收到一条消息,说找不到代码。您应该将它们保存为带有白色背景的jpg文件

我不知道是否还需要做些什么,因为我只是重命名了一个对象并删除了一些导致错误的代码行——但程序确实按照我目前期望的方式运行。如果我有任何未来的问题,我会发布一个新问题。

试试这段代码

ZBarReaderViewController *codeReader = [ZBarReaderViewController new];
codeReader.readerDelegate= self;
codeReader.supportedOrientationsMask = ZBarOrientationMaskAll;
[codeReader.scanner setSymbology:ZBAR_I25 config:ZBAR_CFG_ENABLE to:0];
[codeReader.readerView start];

[self presentViewController:codeReader animated:YES completion:nil];
以下是可选的=

[codeReader.readerView setZoom:2];
codeReader.view.frame = self.view.bounds;

感谢您的快速回复!=我用该代码替换了startScanning的内容,然后尝试在presentViewController行之前插入选项代码,但它似乎有相同的问题。我应该补充的是,显示的图像旋转90度,并覆盖了屏幕。另外,我还不熟悉objective c,所以我不确定用codeReader.scanner替换scanner对象的效果如何。我将更新原始帖子以反映所有这些。您确定-void imagePickerController:UIImagePickerController*reader didFinishPickingMediaWithInfo:NSDictionary*信息从未被调用吗?您有一行代码resultImageView.image=[info-objectForKey:UIImagePickerControllerOriginalImage];在里面。我猜这会使条形码图像出现在屏幕上。我说它不会被调用,因为我输入了NSlog语句,它们不会出现在消息日志中。这可能是因为我缺乏知识。是否有其他显示消息/错误消息/异常的方法?您可以使用断点。你怎么知道它扫描条形码是好的?如果可以,则必须调用委托方法。屏幕上巨大版本的条形码不是resultImageView吗?我在didFinishPickingMediaWithInfo的开头插入了一个断点,但程序没有在应该到达的时候停止。在resultImageView的reguards中,我还尝试用信息评论didFinishPickingMediaWithInfo的全部内容,但仍然出现了巨大的屏幕填充图像。当大的透明条形码出现时,我仍然可以看到屏幕,要求我按下两个手指进入照片。
- (IBAction)startScanning:(id)sender
{
    resultTextView.text = @"Scanning..";

    //Create a reader
    ZBarReaderViewController *codeReader = [ZBarReaderController new];
    //Setup a delegate to recieve the results
    //The delegate implements the ZBarReaderDelegate protocol, which inherits from UIImagePickerControllerDelegate
    codeReader.readerDelegate= self;

    [codeReader.scanner setSymbology: ZBAR_I25 config: ZBAR_CFG_ENABLE to: 0];

    [self presentViewController:codeReader animated:YES completion:nil];

}
ZBarReaderViewController *codeReader = [ZBarReaderViewController new];
codeReader.readerDelegate= self;
codeReader.supportedOrientationsMask = ZBarOrientationMaskAll;
[codeReader.scanner setSymbology:ZBAR_I25 config:ZBAR_CFG_ENABLE to:0];
[codeReader.readerView start];

[self presentViewController:codeReader animated:YES completion:nil];
[codeReader.readerView setZoom:2];
codeReader.view.frame = self.view.bounds;