私は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);
}
UIIMagePicker
intoのキャンセルボタンをタップする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
ありがとうございました!