1

我有以下代码让用户拍照或从相册中选择。虽然从相机拍摄照片效果很好,但当我选择触发从相册中选择动作的按钮时,相册会出现,但您实际上无法选择照片。启动从相册中选择方法时,我确实在控制台中收到警告,而当我启动从相机方法中获取时,我没有收到警告。以下是相关代码和警告。

。H

@interface sitespecTakePhoto : UIViewController <UIImagePickerControllerDelegate,                       UINavigationControllerDelegate>
@property (strong, nonatomic) NSString *pbvlocname;
@property (strong, nonatomic) IBOutlet UITextField *descTextField;
@property (strong, nonatomic) IBOutlet UIImageView *imageField;
@property (strong, nonatomic) UIImagePickerController *imagePicker;
@property (nonatomic, strong) IBOutlet UILabel *successLabel;
@property UIImage *imageToSend;
@property NSString *desc;
- (IBAction)imageFromCamera:(id)sender;
- (IBAction)resignKeyboard:(id)sender;
-(IBAction)uploadButtonClicked:(id)sender;
@end

.m

- (IBAction)imageFromCamera:(id)sender
{

imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
imagePicker.cameraDevice = UIImagePickerControllerCameraDeviceRear;
[self presentViewController:imagePicker animated:YES completion:nil];
}

- (IBAction)imageFromAlbum:(id)sender
{
imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;

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

}

#pragma mark - Image Picker Delegate Methods

//  Dismiss the image picker on selection and use the resulting image in our ImageView
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:    (UIImage *)image editingInfo:(NSDictionary *)editingInfo
{

[[imagePicker presentingViewController] dismissViewControllerAnimated:YES completion:nil];
[imageField setImage:image];
imageToSend = image;



}

//  On cancel, only dismiss the picker controller
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
[[imagePicker presentingViewController] dismissViewControllerAnimated:YES   completion:nil];
}


 - (IBAction)resignKeyboard:(id)sender
{
desc = descTextField.text;
[sender resignFirstResponder];
}

以及当我按下按钮触发 imageFromAlbum 方法时收到的警告:

 Warning: Attempt to present <UIImagePickerController: 0x1d59d6b0> on <UINavigationController: 0x1e0319f0> while a presentation is in progress!

再次显示相册,但是当您点击图像或按下取消按钮时没有任何反应,在我看来,这个方法几乎没有识别 UIImagePicker 委托方法,而 imageFromCamera 方法是。提前感谢您的帮助!

4

1 回答 1

0

错误消息中的关键短语是“正在进行演示时”。这表明你是在另一个人presentViewController开火的时候这样做的。我敢打赌,你不小心把这个按钮挂在了两个方法上,所以它试图presentViewController同时执行两个命令。使用 Interface Builder 右侧的连接检查器来解决这个问题。

于 2013-05-18T17:58:09.577 回答