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!

繰り返しますが、アルバムは表示されますが、画像をタップしたり、キャンセル ボタンを押したりしても何も起こりません。助けてくれてありがとう!

4

1 に答える 1

0

エラー メッセージのキー フレーズは、「プレゼンテーションの進行中」です。presentViewControllerこれは、他の人が発砲しているときにこれを行っていることを示唆しています。おそらく、このボタンを誤って2 つのメソッドにフックして、2 つのpresentViewControllerコマンドを同時に実行しようとしているに違いありません。これを正すには、Interface Builder の右側にある接続インスペクターを使用します。

于 2013-05-18T17:58:09.577 に答える