iOS 6.0 で presentPopoverFromRect:inView:permittedArrowDirections:animated がクラッシュする [重複]

StackOverflow https://stackoverflow.com//questions/12667050

質問

iOS 5.1.1 から 6.0 にアップグレードしたところ、ユーザーが photoLibrary から画像またはビデオを選択できるようにするために、imagePickerViewController を contentVC として持つポップオーバーを表示しようとすると、次のコード パスが SIGTRAP でクラッシュします。

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:3 行目で SIGTRAP をシグナルします。

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
役に立ちましたか?

解決

これはの複製です 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'
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top