0

重複の可能性:
viewDidLoad で iPhone カメラを起動するには?

アプリケーションの開始時にカメラ UI を開こうとしています。問題は、スタートボタンをクリックするとカメラが開き、写真やビデオをキャプチャするために使用されるスタートボタンを備えたカメラアプリを既に作成したことです。

viewDidLoad メソッドから startCameraControllerFromViewController を呼び出そうとしていますが、次の例外に直面しています

警告: ウィンドウ階層にないビューで表示しようとしています!

ここに私のコードがあります

- (void)viewDidLoad
{

    imagePicker = [[UIImagePickerController alloc]init];
    [self startCameraControllerFromViewController: self
                                    usingDelegate: self];
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (BOOL) startCameraControllerFromViewController: (UIViewController*) controller
                                   usingDelegate: (id <UIImagePickerControllerDelegate,
                                                   UINavigationControllerDelegate>) delegate {

    if (([UIImagePickerController isSourceTypeAvailable:
          UIImagePickerControllerSourceTypeCamera] == NO)
        || (delegate == nil)
        || (controller == nil))
        return NO;

    UIImagePickerController *cameraUI = [[UIImagePickerController alloc] init];
    cameraUI.sourceType = UIImagePickerControllerSourceTypeCamera;

    cameraUI.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeCamera];

    cameraUI.allowsEditing = NO;
    cameraUI.delegate = delegate;
    [controller presentViewController: cameraUI animated: YES completion:nil];
    return YES;
}
4

1 に答える 1

3

おそらく、コードを viewWillAppear または viewDidAppear メソッドに入れる方がよいでしょう。私の推測では、ビューがロードされていても、実際にはまだ表示されていない可能性があり、startCameraControllerFromViewController の呼び出しが気に入らない可能性があります。

推測です。

于 2013-01-24T01:36:41.360 に答える