2012-05-24 3 views
-2

Я создаю приложение, в котором мне нужно запустить камеру и отсканировать QR-код. Я использую класс, через который запускается сканер. это хорошо в iPhone, но падает в iPad. я использую кодПадение приложения iPad при запуске камеры

if(![[appDelegate.tabbarcontroller.viewControllers objectAtIndex:1] isMovingFromParentViewController]) { 
    [[appDelegate.tabbarcontroller.viewControllers objectAtIndex:1] popToRootViewControllerAnimated:NO]; 
} 
+3

а как насчет отправки кода здесь? –

+2

... и не забудьте опубликовать сообщение об ошибке, которое вы получаете в журналах сбоев :) – dasblinkenlight

+0

Возможно, вы попробуете 1-й iPad, у которого нет камеры? –

ответ

2

Использование защитного программирования в прошивке очень хорошая стратегия для предотвращения аварий.

О вашем вопросе, от Apple, дока:

Чтобы использовать контроллер сборщика изображения, содержащий его элементы управления по умолчанию, выполнить следующие действия:

Убедитесь, что устройство способно улавливать содержание от желаемого источник. Сделайте это, вызвав метод isSourceTypeAvailable: class, , предоставляющий константу из перечисления «UIImagePickerControllerSourceType» .

Проверьте, какие типы носителей доступны, для типа источника , который вы используете, вызывая метод доступныхMediaTypesForSourceType: class . Это позволяет вам различать камеру, которая может использоваться для записи видео и одна, которая может использоваться только для неподвижных изображений.

Ссылка iphone-tutorial-better-way-to-check-capabilities-of-ios-devices по Mugunth Кумар предоставляет информацию, необходимую для контро- от возможностей устройства.

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

0

Вы можете проверить статус AVAuthorization, используя код ниже при использовании носителя.

/* 
// Media types 
AVF_EXPORT NSString *const AVMediaTypeVideo NS_AVAILABLE(10_7, 4_0); 
AVF_EXPORT NSString *const AVMediaTypeAudio NS_AVAILABLE(10_7, 4_0); 
AVF_EXPORT NSString *const AVMediaTypeText NS_AVAILABLE(10_7, 4_0); 
AVF_EXPORT NSString *const AVMediaTypeClosedCaption NS_AVAILABLE(10_7, 4_0); 
AVF_EXPORT NSString *const AVMediaTypeSubtitle NS_AVAILABLE(10_7, 4_0); 
AVF_EXPORT NSString *const AVMediaTypeTimecode NS_AVAILABLE(10_7, 4_0); 
AVF_EXPORT NSString *const AVMediaTypeMetadata NS_AVAILABLE(10_8, 6_0); 
AVF_EXPORT NSString *const AVMediaTypeMuxed NS_AVAILABLE(10_7, 4_0); 
*/ 

AVAuthorizationStatus status = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo]; 
if(status == AVAuthorizationStatusAuthorized) 
{ 
    // authorized 
    NSLog(@"authorized"); 
} 
else if(status == AVAuthorizationStatusDenied) 
{ 
    // denied 
    NSLog(@"denied"); 
} 
else if(status == AVAuthorizationStatusRestricted) 
{ 
    // restricted 
    NSLog(@"restricted"); 
} 
else if(status == AVAuthorizationStatusNotDetermined) 
{ 
    // not determined 
    NSLog(@"not determined"); 

    [AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) { 
     if(granted){ // Access has been granted ..do something 

     } else { // Access denied ..do something 

     } 
    }]; 
} 
Смежные вопросы