2012-06-11 4 views
9

W końcu udało mi się naprawić błąd powodujący awarię nagrywania UIImagePickerController. Gdy ustawienie dostępności VoiceOver w telefonie iPhone jest włączone, nagrywarka ulega awarii podczas połączenia pod numerem presentModalViewController.Ustawienia dostępności iPhone VoiceOver powodują awarię nagrywania wideo

Do tej pory nie udało mi się znaleźć obejścia. Czy ktoś inny tego doświadczył i był w stanie to naprawić?

+0

Jaką wersję systemu operacyjnego? Jakie wersje systemu operacyjnego nie są dostępne? Czy rozważałeś złożenie raportu o błędzie? –

+0

Napotykam to samo, ale tylko wtedy, gdy showCameraControls jest ustawione na NIE. – kamens

+1

Otrzymujesz dwa incydenty pomocy technicznej związane z kontem programisty na iOS. To brzmi jak czas na to. Jeśli istnieje obejście problemu, faceci z Apple będą wiedzieć. – Swizzlr

Odpowiedz

3

@kamens jak wspomniano w powyższych uwagach obejście tego problemu jest włączenie do camera.showsCameraControls = NO w bloku realizacji przedstawiając widok kontrolera modalne w następujący sposób:

[controller presentViewController:self animated:YES completion:^{self.showsCameraControls = NO;}]; 

Jednakże, w tym rozwiązaniu, kamera kontroluje lampy chwilowo po przedstawieniu kamery, znikają. Oczywiście nie jest idealny, gdy kontrolki naprawdę muszą być ukryte. Innym obejściem jest ustawienie camera.showsCameraControls = OFF ... jeszcze mniej idealnej.


@quellish, to wyjście z katastrofy:

*** -[PLCameraToggleButton setAccessibilityValue:]: message sent to deallocated instance 0x4a330b0 

@kamens, tutaj jest kod używam ustawić mediaTypes i captureMode:

tmpCamera.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeMovie]; 
tmpCamera.cameraCaptureMode = UIImagePickerControllerCameraCaptureModeVideo; 
+0

Znakomity! Po spędzeniu 1 pełnego dnia znalazłem twoją odpowiedź. Wielkie dzięki, to zadziałało dla mnie! –

1

Jak wspomina @james, dzieje się to w systemie iOS 5.1, gdy:

  • Korzystanie picker.showsCameraControls = NO
  • Korzystanie animated:NO w wywołaniu do [viewController presentViewController:picker animated:YES completion:nil];
  • opcję dostępność VoiceOver jest włączony.

... i znacząco, gdy tylko określenie filmów jako nośników akceptowanych przez selektora:

  • picker.mediaTypes = [NSArray arrayWithObject: (NSString *) kUTTypeMovie];

Jednak udało mi się rozwiązać ten problem poprzez zmianę powyższej mediatypes wiersz na:

picker.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:picker.sourceType]; 

... co działa dobrze, zważywszy, że kontrole domyślnej kamery są ukryte i mogę programowo kontrolować, czy rozpocząć nagrywanie wideo, czy zrobić zdjęcie.

Nie twierdzę, że rozumiem przyczynę tej awarii.