Как предотвратить вращение модального UIImagePickerController? - PullRequest
9 голосов
/ 05 декабря 2010

У меня есть приложение, которое полностью поддерживает вращение. Я модально добавляю UIImagePickerController, для которого нет поддержки UIInterfaceOrientationLandscape, и я не могу заставить контроллер оставаться в портретном режиме.

Другими словами, мне нужно отключить вращение для UIImagePickerController, чтобы оно оставалось в портретной ориентации, не удаляя вращение для остальной части моего приложения. это кажется основным, но я не могу найти его. Как я могу предотвратить это вращение?



UPDATE

Как и предполагалось, я попытался создать подкласс с помощью следующего кода:

@interface UAImagePickerController : UIImagePickerController {
}
@end

@implementation UAImagePickerController
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
    return UIDeviceOrientationIsPortrait(toInterfaceOrientation);
}
@end

Строка вообще не пересекается с точкой останова ... я думаю, что в UIImagePickerView

должно быть что-то забавное

Ответы [ 4 ]

0 голосов
/ 15 мая 2012

Я создал свой UIImagePickerController внутри UIViewController с соответствующим реализованным методом shouldAutorotateToInterfaceOrientation и представил его так:

[self.view addSubview:myImagePicker.view];
[targetVC.navigationController presentModalViewController:self animated:YES];

Надеюсь, что поможет.

0 голосов
/ 20 июня 2011

Вы должны переопределить _isSupportedInterfaceOrientation:, а не mustAutorotateToInterfaceOrientation:

iPad 2 UIImagePickerКонтроллер камеры с автоматическим вращением сводит меня с ума!

0 голосов
/ 24 августа 2011

Просто поместите это над блоком ViewControllers @implementation (в файле .m)

@implementation UIImagePickerController (portrait)

- (BOOL)_isSupportedInterfaceOrientation:(UIDeviceOrientation)orientation
{
    return UIDeviceOrientationIsPortrait(orientation);
}

@end
0 голосов
/ 05 декабря 2010

Подкласс UIImagePickerController и этот новый класс реализует shouldAutorotateToInterfaceOrientation:, чтобы повернуть его только в портретную форму, что-то вроде этого:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
...