-2

カメラから画像をキャプチャするためのアプリケーションを作成しました。これは私のコードです

-(IBAction) showCameraUI {
    BOOL hasCamera = [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera];
    UIImagePickerController* picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;
    picker.sourceType = hasCamera ? UIImagePickerControllerSourceTypeCamera :    UIImagePickerControllerSourceTypePhotoLibrary;
    [self presentModalViewController:picker animated:YES];
}

そして、キャプチャされた画像を取得するためにこのデリゲート メソッドを実装しました

- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    [picker dismissModalViewControllerAnimated:YES];
    UIImage* image = [info objectForKey:UIImagePickerControllerOriginalImage];
    UIImage *yourImageView = image;
}

ユーザーがコントローラーをキャンセルした場合にこのメソッドを実装しました

- (void)imagePickerControllerDidCancel:(UIImagePickerController*)picker
{
    [picker dismissModalViewControllerAnimated:YES];
}

しかし、それはこの例外を示しています。関数showCameraUIの最後の行を実行した後、なぜそのような例外が表示されるのか、誰にも分かりますか?

UIStatusBarStyleBlackTranslucent は、このデバイスでは利用できません。2013-02-07 10:06:06.976 CaptureImage[460:c07] *キャッチされない例外 'NSInvalidArgumentException' が原因でアプリを終了します。理由: 'iPad では、UIImagePickerController は UIPopoverController 経由で提示する必要があります'

4

2 に答える 2

1

Plsはこれを試してください

// アルバムから画像を選択

- (IBAction)imageFromAlbum:(id)sender
{
    imagePicker = [[UIImagePickerController alloc] init];
    imagePicker.delegate = self;
    imagePicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
    [self presentViewController:imagePicker animated:YES completion:nil];
}

// カメラで画像を撮る

- (IBAction)imageFromCamera:(id)sender
{
    imagePicker = [[UIImagePickerController alloc] init];
    imagePicker.delegate = self;
    imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
    imagePicker.cameraDevice = UIImagePickerControllerCameraDeviceRear;
    [self presentViewController:imagePicker animated:YES completion:nil];
}


//  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 dismissModalViewControllerAnimated:YES];
    [imageField setImage:image];
}

// キャンセル時には、ピッカー コントローラーのみを閉じます

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
    [imagePicker dismissModalViewControllerAnimated:YES];
}
于 2013-02-07T10:29:53.077 に答える