Pregunta

Acabo de actualizar de iOS 5.1.1 a 6.0 y la siguiente ruta de código falla con SIGTRAP cuando intenta mostrar una ventana emergente con un imagePickerViewController como su contentVC para permitir al usuario seleccionar una imagen o un video de la biblioteca de fotografías.

Funcionó muy bien con 5.1.1.He estado solucionando este problema durante un par de días sin ningún progreso.¿Alguien tiene alguna idea sobre esto?¿Existe algún método alternativo para usar con iOS6.0?Puedo agregar más código si es necesario...

Puedo capturar imágenes y videos con la línea:

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

Aquí está el método completo llamado después de que el usuario toca un 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];
        }
    }
}

Esto es lo que aparece en la ventana de código:

Hilo 1:señal SITRAP en la línea 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

Aquí está el rastreo del 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
¿Fue útil?

Solución

Este es un duplicado de https://stackoverflow.com/a/12575058/1074338

Además, debería haber tocado el botón Ir en el depurador...que reveló el código infractor:

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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top