2012-10-01 50 views
1

我剛剛從iOS 5.1.1升級到6.0,並且以下代碼路徑在嘗試顯示帶有imagePickerViewController的彈出窗口作爲其contentVC以允許用戶時與SIGTRAP崩潰從照片庫中選擇圖像或視頻。presentPopoverFromRect:inView:permittedArrowDirections:在iOS 6.0中動畫崩潰

它與5.1.1一起工作得很好。我一直在解決這個問題幾天,沒有任何進展。 有沒有人有這方面的處理?有沒有其他方法可用於iOS6.0?如果需要,我可以添加更多的代碼...

我可以拍攝圖像和視頻線:

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

這裏是用戶觸摸的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]; 
     } 
    } 
} 

下面是在代碼窗口:

線程1:信號SIGTRAP第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 

這裏是來自調試器回溯:

( 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 

回答

1

這是https://stackoverflow.com/a/12575058/1074338

而且重複的,我應該已經觸及了調試器轉到按鈕... 它揭示了問題的代碼:

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'