2013-01-18 21 views
6

Tôi hoạt động trên iPad 4 với iOS 6.0.Lỗi sự cố UIIMagePickerController khi loại bỏ trên iPad ios 6.0

Tôi có một ViewController (MyPickerController) với init sau:

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

tôi thực hiện phương pháp UIPickerControllerDelegate sau để dimiss MyPickerController:

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

Vâng, tôi đã khác điều khiển xem thấy modally trong FormSheetStyle và khi tôi nhấn vào nút tôi muốn hiển thị MyPickerController với mã sau:

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

Trong appdelegate của tôi có phương pháp totation sau:

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

Khi tôi gõ vào nút UIIMagePicker hủy vào MyPickerController, các tai nạn ứng dụng với các lỗi sau:

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

Đọc câu hỏi liên quan trên stackoverflow, tôi cũng tạo danh mục UIImagePickerController follwing:

@implementation UIImagePickerController (NonRotating) 

- (BOOL)shouldAutorotate 
{ 
   return NO; 
} 

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation 
{ 
   return UIInterfaceOrientationMaskPortrait; 
} 

- (NSUInteger)supportedInterfaceOrientations 
{ 
   return UIInterfaceOrientationMaskPortrait; 
} 

@end 

Cảm ơn bạn!

+0

lý do tại sao bạn thêm quan điểm của bảng chọn như là một subview của bạn lượt xem? –

Trả lời

2

Hãy thử làm điều này ..

Nếu điều khiển xem của bạn là bên trong một UINavigationController, bạn nên sử dụng loại này cho navigationcontroller:

@implementation UINavigationController (autorotate) 

- (NSUInteger)supportedInterfaceOrientations{ 
     return UIInterfaceOrientationMaskAll; 
} 

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{ 
     return UIInterfaceOrientationMaskPortrait; 
} 


@end