gpt4 book ai didi

iPhone - 如何处理多个 UIImagePickerControllerDelegate?

转载 作者:行者123 更新时间:2023-12-03 20:14:37 25 4
gpt4 key购买 nike

我正在开发一个简单的应用程序扫描二维码。为了扫描 QR 码,我使用一种委托(delegate)方法,如下所示。

- (void) imagePickerController: (UIImagePickerController*) reader didFinishPickingMediaWithInfo: (NSDictionary*) info

我还有另一种委托(delegate)方法,用于源类型相机拍照。

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)img editingInfo:(NSDictionary *)editInfo 

我有 2 个按钮用于扫描 QR 和拍照。但问题是,当我拍摄新照片时,

- (void) imagePickerController: (UIImagePickerController*) reader didFinishPickingMediaWithInfo: (NSDictionary*) info

方法被调用。怎么解决这个问题。当我选择照片按钮时,我需要调用特定的委托(delegate)方法,当我调用选择 QR 按钮时,我需要调用其他委托(delegate)方法。

最佳答案

首先 - 值得一提的是这个方法:

- (void)imagePickerController:(UIImagePickerController *)picker 
didFinishPickingImage:(UIImage *)img
editingInfo:(NSDictionary *)editInfo

自 iOS 3.0 起已弃用。现在唯一可以使用的方法是

- (void)imagePickerController:(UIImagePickerController *)picker  
didFinishPickingMediaWithInfo:(NSDictionary *)info

(您从字典中获取图像引用)

要回答这个问题:您需要一种方法来识别委托(delegate)回调中的每个选择器。做到这一点的一种方法是创建几个属性,每个选择器一个,并在调用选择器时设置该属性...

@property (nonatomic, weak) UIImagePickerController* QRpicker;
@property (nonatomic, weak) UIImagePickerController* cameraPicker;

正在创建您的 QRPicker...

 UIImagePickerController* QRpicker = [[UIImagePickerController alloc] init];
//configure QRPicker
[self presentViewController:QRpicker];
self.QRpicker = QRpicker;

对cameraPicker执行相同的操作

然后你只需要检查哪种类型的选择器调用了委托(delegate)方法

- (void)imagePickerController:(UIImagePickerController *)picker  
didFinishPickingMediaWithInfo:(NSDictionary *)info
{
if ([picker isEqual:self.QRPicker])
//code for QRPicker delegate
else
//code for cameraPicker delegate

关于iPhone - 如何处理多个 UIImagePickerControllerDelegate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16411352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com