Pergunta

Acabei de atualizar do iOS 5.1.1 para 6.0 e o seguinte caminho de código está travando com o SIGTRAP quando ele tenta exibir um popover com um imagePickerViewController como seu contentVC para permitir que o usuário selecione uma imagem ou vídeo da photoLibrary.

Estava funcionando muito bem com 5.1.1.Estou solucionando isso há alguns dias, sem progresso.Alguém sabe disso?Existe um método alternativo para usar no iOS6.0?Posso adicionar mais código, se necessário ...

Posso capturar imagens e vídeos com a linha:

[self presentViewController:self.imagePickerViewController.imagePickerController animated:YES completion:NULL];

Aqui está o método completo chamado depois que o usuário toca em um UIButton.

- (void)showImagePicker:(UIImagePickerControllerSourceType)sourceType mediaType:(NSString *)mediaType
{
    if (self.capturedMovies.count > 0)
        [self.capturedMovies removeAllObjects];

    if ([UIImagePickerController isSourceTypeAvailable:sourceType])
    {
        [self.imagePickerViewController setupImagePicker:sourceType mediaType:mediaType];

        if (sourceType == UIImagePickerControllerSourceTypeCamera) { // WORKS
            [self presentViewController:self.imagePickerViewController.imagePickerController animated:YES completion:NULL];
        }
        else if (sourceType == UIImagePickerControllerSourceTypePhotoLibrary) { 
        //else if ([mediaType isEqualToString:(NSString *)kUTTypeMovie] || [mediaType isEqualToString:(NSString *)kUTTypeImage]) {

            if (!self.moviePickerPopoverController) {
                self.moviePickerPopoverController = [[UIPopoverController alloc] initWithContentViewController:self.imagePickerViewController.imagePickerController];
            }

            UIView *uiViewObject = self.mediaTitleTextField;

            CGFloat xLocation = uiViewObject.frame.origin.x;
            CGFloat yLocation = uiViewObject.frame.origin.y;

            CGFloat width = uiViewObject.bounds.size.width;
            CGFloat height = uiViewObject.bounds.size.height;

            // CRASHES HERE!!!
            [self.moviePickerPopoverController presentPopoverFromRect:CGRectMake(xLocation, yLocation, width, height)
                                                               inView:self.view
                                             permittedArrowDirections:UIPopoverArrowDirectionAny
                                                             animated:YES];
        }
    }
}

Aqui está o que aparece na janela de código:

Tópico 1:sinal SIGTRAP na linha 3:

libsystemkernel.dylib`_kill:
0x394e7830: mov r12, #37
0x394e7834: svc #128
0x394e7838: blo 0x394e7850 ; __kill + 32 <<<<<<<<< Thread 1: signal SIGTRAP
0x394e783c: ldr r12, [pc, #4] ; __kill + 24
0x394e7840: ldr r12, [pc, r12]
0x394e7844: b 0x394e784c ; __kill + 28
0x394e7848: ldrdeq r6, r7, [r0], -r12
0x394e784c: bx r12
0x394e7850: bx lr

Aqui está o backtrace do depurador:

(lldb) bt

* thread #1: tid = 0x2503, 0x394e7838 libsystem_kernel.dylib`__kill + 8, stop reason = signal SIGTRAP
    frame #0: 0x394e7838 libsystem_kernel.dylib`__kill + 8
    frame #1: 0x001275d4 MyAppName`TFHandleExceptions + 992
    frame #2: 0x36bd357e CoreFoundation`__handleUncaughtException + 614
    frame #3: 0x39313a64 libobjc.A.dylib`_objc_terminate() + 128
    frame #4: 0x3363c07a libc++abi.dylib`safe_handler_caller(void (*)()) + 78
    frame #5: 0x3363c114 libc++abi.dylib`std::terminate() + 20
    frame #6: 0x3363d598 libc++abi.dylib`__cxa_rethrow + 88
    frame #7: 0x393139d0 libobjc.A.dylib`objc_exception_rethrow + 12
    frame #8: 0x36b19f20 CoreFoundation`CFRunLoopRunSpecific + 456
    frame #9: 0x36b19d48 CoreFoundation`CFRunLoopRunInMode + 104
    frame #10: 0x38ca82ea GraphicsServices`GSEventRunModal + 74
    frame #11: 0x3701d300 UIKit`UIApplicationMain + 1120
    frame #12: 0x000629b0 MyAppName`main + 96 at main.m:16
Foi útil?

Solução

Esta é uma duplicata de https://stackoverflow.com/a/12575058/1074338

Além disso, eu deveria ter tocado no botão ir do depurador...que revelou o código ofensivo:

enter image description here

*** Terminating app due to uncaught exception
'UIApplicationInvalidInterfaceOrientation',
 reason: 'Supported orientations has no common orientation
 with the application, and shouldAutorotate is returning YES'
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top