2

ここでの問題は、私が mediaPicker を呼び出そうとしていて、それが他の向きをサポートしていないことだと思います...

誰でもこれを修正できますか?

これが私の現在のコードです:

- (IBAction)openMediaPicker:(id)sender {
    MPMediaPickerController *mediaPicker = [[MPMediaPickerController alloc] initWithMediaTypes:MPMediaTypeAnyAudio];
mediaPicker.delegate = self;
mediaPicker.allowsPickingMultipleItems = YES; // this is the default
    mediaPicker.modalPresentationStyle = UIModalPresentationPageSheet;
    //mediaPicker.prompt = @"Select items to play";
[self presentModalViewController:mediaPicker animated:YES];
[mediaPicker release];

    // Init a Navigation Controller, using the MediaPicker as its root view controller
    UINavigationController *theNavController = [[UINavigationController alloc] initWithRootViewController:mediaPicker];
    [theNavController setNavigationBarHidden:YES];

    // Init the Popover Controller, using the navigation controller as its root view controller
    popoverController = [[UIPopoverController alloc] initWithContentViewController:theNavController];

    // Make a rect at the size and location of the button I use to invoke the popover
   CGRect popOverRect = chooseMusicButton.frame;

    // Specify the size of the popover
    CGSize MySize = CGSizeMake(520.0, 720.0);

    [popoverController setPopoverContentSize:MySize animated:YES];

    // Display the popover
    [popoverController presentPopoverFromRect:popOverRect inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
    popoverController.delegate = self;
}
4

2 に答える 2

3

このコードは非常に複雑です。最初にメディアピッカーをモ​​ーダルに提示し、次にポップオーバーとして提示します。なぜ?ポップオーバーでは、表示する前にナビゲーションコントローラーに詰め込みます。なぜ?iPadでのメディアピッカーの表示は、それよりもはるかに簡単です。

MPMediaPickerController* picker = 
    [[[MPMediaPickerController alloc] init] autorelease];
picker.delegate = self;
UIPopoverController* pop = 
        [[UIPopoverController alloc] initWithContentViewController:picker];
self.currentPop = pop;
[pop presentPopoverFromRect:[sender bounds] inView:sender
        permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
[pop release];

これはどの方向でも機能し、ポップオーバーが表示されている間は回転しても存続します。

于 2011-01-26T13:43:06.443 に答える
0

すべての定義済みモーダル コントローラーはすべての方向をサポートしますが、方向と回転で正しく動作するには、ルート ビュー コントローラーから提示する必要があります。私の推測では、コード内の「自己」はルート ビュー コントローラーではありません。可能であれば、これを実現するためにコードを少し再構築する必要があるかもしれません。

ルートView Controllerから提示されなくても機能するようにするために私が見た他のハックがありますが、それらはすべてUIViewControllerをカテゴリで拡張してinterfaceOrientationをオーバーライドするなどの問題を求めているようです。

ルート ビュー コントローラーから表示できる場合は、最も単純でクリーンですが、常に可能であるとは限りません (たとえば、サード パーティのアプリに提供して埋め込むライブラリ内にある場合など)。

于 2010-07-22T03:29:19.637 に答える