【发布时间】:2013-12-13 10:52:07
【问题描述】:
我在我的 iOS 应用程序中使用标签栏。当我点击扫描选项卡时,我调用了委托方法以立即在扫描选项卡上启动相机。当我启动相机扫描二维码并在扫描前点击取消按钮时,我得到空白视图。关闭相机时如何显示视图
- (void) openCameraScanner
{
ZBarReaderViewController *reader = [[ZBarReaderViewController alloc] init];
reader.readerDelegate = self;
reader.supportedOrientationsMask = ZBarOrientationMaskAll;
reader.showsZBarControls = YES;
ZBarImageScanner *scanner = reader.scanner;
[scanner setSymbology: ZBAR_I25
config: ZBAR_CFG_ENABLE
to: 0];
[self presentViewController:reader animated:YES completion:nil];
reader.showsZBarControls = YES;
//reader.cameraOverlayView = [self commonOverlay];
}
- (void) imagePickerController: (UIImagePickerController*) reader
didFinishPickingMediaWithInfo: (NSDictionary*) info
{
// ADD: get the decode results
id<NSFastEnumeration> results =
[info objectForKey: ZBarReaderControllerResults];
ZBarSymbol *symbol = nil;
for(symbol in results)
// EXAMPLE: just grab the first barcode
break;
// EXAMPLE: do something useful with the barcode data
//resultsView.text = symbol.data;
NSString *urlString = symbol.data;
NSURL *url = [NSURL URLWithString:urlString];
NSLog(@"Query after scan = %@", [url query]);
//Extract id from URL which is there in QR Code --- start
NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];
for(NSString *param in [urlString componentsSeparatedByString:@"&"])
{
NSArray *elements = [param componentsSeparatedByString:@"="];
if([elements count]<2)
continue;
[dictionary setObject:[elements objectAtIndex:1] forKey:[elements objectAtIndex:0]];
NSLog(@"value is == %@", [elements objectAtIndex:1]);
//Extract id from URL which is there in QR Code --- end
if([[elements objectAtIndex:1] intValue])
{
NSUserDefaults *defaultsForAsk = [NSUserDefaults standardUserDefaults];
idToAsk = [NSString stringWithFormat:@"%d",[[elements objectAtIndex:1] intValue]];
[defaultsForAsk setObject:idToAsk forKey:@"IDTOASKVIEW"];
flagToShowView = YES;
listViewCntrl.getFlag = flagToShowView;
[self viewDidLoadForDynamicFields];
}
else if([elements objectAtIndex:1] == [NSNull null])
{
[reader dismissViewControllerAnimated:YES completion:Nil];
UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"Invalid QR Code scanned" message:@"Please scan Collaborator's QR Code" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[message show];
}
}
image.image =
[info objectForKey: UIImagePickerControllerOriginalImage];
// ADD: dismiss the controller (NB dismiss from the *reader*!)
//[reader dismissViewControllerAnimated:YES completion:nil];
[reader dismissViewControllerAnimated:YES completion:Nil];
}
【问题讨论】:
-
您从哪里展示 Zbar 扫描视图控制器?从视图控制器或您的子类标签栏控制器?
-
我在 viewDidLoad 中添加了 [self openCameraScanner]。我还在 viewWillAppear 和 viewDidAppear 中调用了 openCameraScanner,但没有解决问题。
-
您能否在您的设备中启动相机,但您在正确关闭阅读器时遇到了问题?
-
@jailanihabeeb 是的.. 取消按钮按下给出一个空白视图而不是笔尖。这可能是因为dismissModalViewController 被贬低并且dismissViewControllerAnimated 正在创建这个问题.. ?..
-
可能是...可能是因为我更改了 ios7 的弃用功能