Срив на приложението в iOS 7

Приложението се срива, когато използвам UIImagePicker на iPhone, но само на iOS 7. Използвам следните кодови редове

    picker = [[UIImagePickerController alloc] init];

    picker.delegate = self;
    picker.allowsEditing = YES;

    if( [UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceFront] || [UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceRear])
    {
        picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    } else {
        //[self showAlertViewWithTitle:@"Sorry" message:@"Your Device Don't Have Camera"];
    }

    [self presentViewController:picker animated:YES completion:nil];

}

Приложението работи на iOS 6, а не на iOS 7. Нов съм в този сайт, моля, помогнете.


person Pravin    schedule 21.10.2013    source източник
comment
Можете ли да публикувате изключението, което получавате?   -  person Shaun    schedule 21.10.2013
comment
За да стане ясно. Срива се, когато работи под iOS 7 и работи под iOS 6? Да, най-добрият начин е също да публикувате съобщение за грешка и т.н. от конзолата.   -  person Binarian    schedule 21.10.2013
comment
причина: „Поддържаните ориентации нямат обща ориентация с приложението и shouldAutorotate връща ДА“   -  person Pravin    schedule 21.10.2013
comment
след това във вашия ViewController трябва да промените Autorotate на НЕ вместо на ДА.   -  person Nitin Gohel    schedule 21.10.2013
comment
опитах, но без успех. приложението работи в iOS6, а не в iOS 7.   -  person Pravin    schedule 21.10.2013
comment
@Pravin, твоето приложение има ли го в пейзажен режим?   -  person user1673099    schedule 21.10.2013
comment
Да, приложението е в пейзажен режим.   -  person Pravin    schedule 21.10.2013
comment
@Правин, чакай!! Качвам моя код..   -  person user1673099    schedule 21.10.2013


Отговори (3)


UIImagePickerController представяне в режим Potratin Само в iPhone. И открих още един бъг във вашия код, че използвате picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary докато isCameraDeviceAvailable това не е наред:-

трябва да кодирате като:-

if( [UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceFront] || [UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceRear])
    {
       picker.sourceType = UIImagePickerControllerSourceTypeCamera;
                 [self presentViewController:picker animated:YES completion:nil];
    } else {
         picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
                 [self presentViewController:picker animated:YES completion:nil];       
    }

и във вашия ViewController shouldAutorotate промените на НЕ вместо на ДА

person Nitin Gohel    schedule 21.10.2013
comment
Чувствайте се свободни да приемете този отговор. Изглежда този отговор е решил проблема ви. :) - person Ganapathy; 21.10.2013

Във вашия файл ViewController.m преди стартиране на @implementation напишете следния код

@interface NonRotatingUIImagePickerController : UIImagePickerController

@end

@implementation NonRotatingUIImagePickerController

- (BOOL)shouldAutorotate
{
    return NO;
}

@end

Където искате да създадете обект на инструмента за избор на изображения, напишете следния код

UIImagePickerController* picker = [[NonRotatingUIImagePickerController alloc] init];
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
picker.delegate = self; 
    [self presentModalViewController:picker animated:YES];
person user1673099    schedule 21.10.2013
comment
Уведомете ме, ако имате някакъв проблем. - person user1673099; 21.10.2013
comment
PopOverController работи ли на iPhone? - person Pravin; 21.10.2013
comment
@Pravin, о, извинявай... Чакай малко... Актуализирам отговора си. - person user1673099; 21.10.2013
comment
решено, но в iphone изскачащият прозорец се отваря в портретен режим..но имам нужда от пейзажен режим. - person Pravin; 21.10.2013
comment
Imager Picker никога не поддържа пейзажен режим. - person user1673099; 21.10.2013

добре, ако случаят е такъв, опитайте това вън...

добавете това към вашия ViewController

- (NSUInteger) supportedInterfaceOrientations
{
     //Because your app is only landscape, your view controller for the view in your
     // popover needs to support only landscape
     return UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight;
}
person Raon    schedule 21.10.2013
comment
Мисля, че това вече е отхвърлено. Предполага се, че само навигационните контролери трябва да имат поддържан метод InterfaceOrientations - person ShayanK; 29.10.2013