6

私はiOS6.0を搭載したiPad4で作業しています。

次のinitを持つViewController(MyPickerController)があります。

- (id)init
{
    self = [super init];
    if (self) {
        _picker = [[UIImagePickerController alloc] init];
        _picker.delegate = self;
        _picker.sourceType = UIImagePickerControllerSourceTypeCamera;
        [self.view addSubview:_picker.view];
    }
    return self;
}

次のUIPickerControllerDelegateメソッドを実装して、MyPickerControllerを削除します。

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
    [self dismissViewControllerAnimated:YES completion:nil];
}

さて、私は別のビューコントローラーをモーダルで表示しています。ボタンをタップすると、次のコードでFormSheetStyle表示したいと思います。MyPickerController

MyPickerController * pickerVC = [[MyPickerController alloc] init];
[self presentViewController:pickerVC animated:YES completion:nil];

私のAppDelegateには、次のトート方法があります。

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
    
    return (NSUInteger)[application supportedInterfaceOrientationsForWindow:window] | (1<<UIInterfaceOrientationPortrait);
    
}

UIIMagePickerintoのキャンセルボタンをタップするMyPickerControllerと、アプリケーションがクラッシュし、次のエラーが発生します。

Terminating app due to uncaught exception 'UIApplicationInvalidInterfaceOrientation', reason: 'preferredInterfaceOrientationForPresentation must return a supported interface orientation!

stackoverflowに関する関連する質問を読んで、次のUIImagePickerControllerカテゴリも作成します。

@implementation UIImagePickerController (NonRotating)

- (BOOL)shouldAutorotate
{
    return NO;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    return UIInterfaceOrientationMaskPortrait;
}

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait;
}

@end

ありがとうございました!

4

1 に答える 1

2

これを試してみてください。

ビューコントローラがUINavigationController内にある場合は、ナビゲーションコントローラに次のカテゴリを使用する必要があります。

@implementation UINavigationController (autorotate)

- (NSUInteger)supportedInterfaceOrientations{
      return UIInterfaceOrientationMaskAll;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{
      return UIInterfaceOrientationMaskPortrait;
}


@end
于 2013-01-21T10:55:22.487 に答える