"Поддерживаемые ориентации не имеют общей ориентации с приложением, и shouldAutorotate возвращает ДА '
* Мое мнение в режиме ландшафтного ландшафта. Я сохраняю изображение, и я хочу, чтобы это изображение было возвращено для этого, и мой код ниже, и я получаю ошибку. "Завершение приложения из-за неперехваченного исключения". UIApplicationInvalidInterfaceOrientation ", причина:" Поддерживаемые ориентации нет общей ориентации с приложением, и shouldAutorotate возвращает ДА '* *, что я могу сделать для iphone?
`- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
[self dismissModalViewControllerAnimated:YES];
[picker release];
}
- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info {
[picker dismissModalViewControllerAnimated:NO];
imageDoodle.image = [info objectForKey:@"UIImagePickerControllerMediaMetadata"];
}
-(IBAction)loadfromalbumclicked:(id)sender
{
UIImagePickerController * picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.allowsEditing=NO;
picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
// self.modalTransitionStyle=UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:picker animated:YES];
}
-(IBAction)savePrint{
//Save image to iOS Photo Library
UIImageWriteToSavedPhotosAlbum(imageDoodle.image, nil, nil, nil);
//Create message to explain image is saved to Photos app library
UIAlertView *savedAlert = [[UIAlertView alloc] initWithTitle:@"Saved"
message:@"Your picture has been saved to the photo library, view it in the
Photos app." delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
//Display message alert
[savedAlert show];
}`
Ответы
Ответ 1
попробуйте настроить shouldAutoRotate на NO и посмотреть, работает ли он.
Вы можете использовать методы shouldAutoRotate и supportedInterfaceOrientations в iOS 6.0 или новее, а не метод (устаревший) shouldAutoRotateToInterfaceOrientation.
Что-то вроде этого -
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskAll;
}
- (BOOL) shouldAutorotate {
return YES;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
return UIInterfaceOrientationPortrait;
}
Ответ 2
Вы поддерживаете только ограниченную ориентацию как пейзажной, так и портретной. Но вы вызываете другую ориентацию в своем контроллере вида.
Вы можете увидеть следующее изображение с поддерживаемой ориентацией. Он поддерживает только пейзаж справа и пейзаж слева. Так что, если я буду называть портретом, он покажет ошибку, как вы. Поэтому, если вы хотите поддержать обе ориентации, измените ее в сводке.
![enter image description here]()
Подробнее см. этот ответ.
Надеюсь, что это поможет.
ИЗМЕНИТЬ
Итак, вы должны поместить этот код в свой viewcontroller
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight;
}
Ответ 3
Эта ошибка возникает, если существует несоответствие между поддерживаемыми ориентациями интерфейса в plist и те, которые возвращаются -(NSUInteger)supportedInterfaceOrientations
Имейте в виду, что NSUInteger
, возвращаемый supportedInterfaceOrientations
, должен быть UIInterfaceOrientationMask, обратите внимание на -MASK-, я однажды допустил ошибку, просто вернув UIInterfaceOrientation i.s.o. значение... Маска (это автозаполнение для вас)
например.
- (NSUInteger) supportedInterfaceOrientations {
return UIInterfaceOrientationMaskPortrait;
// and NOT UIInterfaceOrientationPortrait;
}
Ответ 4
Примечание. Если вы используете UIImagePickerController
или UIPopoverController
, и эти error
возникают, то это ниже решение чертовски хорошо.
Кроме того, эта ошибка возникает только в iOS 6.0
Создайте новый UIImagePickerController's
category
и add
@implementation UIImagePickerController(custom)
-(BOOL)shouldAutorotate
{
return NO;
}
@end
Это работает для меня.
Ответ 5
Если вы используете cocos2d v2.1, вы можете попробовать это для Portrait.
-(NSUInteger)supportedInterfaceOrientations {
// iPhone only
if( [[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone )
return UIInterfaceOrientationMaskPortrait;
// iPad only
return UIInterfaceOrientationMaskPortrait;
}
// Supported orientations. Customize it for your own needs
// Only valid on iOS 4 / 5. NOT VALID for iOS 6.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// iPhone only
if( [[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone )
return UIInterfaceOrientationIsPortrait(interfaceOrientation);
// iPad only
// iPhone only
return UIInterfaceOrientationIsPortrait(interfaceOrientation);
}
Ориентации поддерживаются Ориентации и автоматически поворачиваются Ориентации должны быть одинаковыми.
Ответ 6
Для iOS 6.0, если ваше приложение поддерживает только ландшафтный режим, когда вы открываете UIImagePickerController, он будет аварийно завершен.
Мое решение добавляет категорию ниже в UIImagePickerController:
@interface UIImagePickerController (oritation)
@end
@implementation UIImagePickerController (oritation)
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscape;
}
@end
Ответ 7
У меня была такая же ошибка, это может быть одна или несколько следующих обратных конфликтных ориентаций:
- Проверьте свой -Info.plist, для ключевых "поддерживаемых ориентаций интерфейса"
- Проверьте панель сводки, нажав на свое приложение из навигатора проекта.
- Как уже упоминалось, проверьте, что возвращает метод supportedInterfaceOrientations.
Я решил использовать явное определение отдельных клавиш "Ориентированные интерфейсы (IPad)" и "Поддерживаемые интерфейсы ориентации интерфейса (iPhone)" в -Info.plist, поскольку мне нужны разные ориентации для разных устройств.
Удачи!
Ответ 8
Если вы пытаетесь вернуть NO в shouldAutorotate?