ビューに追加するUIToolbarがあり、ツールバーにはいくつかのUIBarButtonItemがあります。ボタンの 1 つが UIDocumentInteractionController Open In メニューを呼び出します。iPhone では、[開く] メニューは UIActionSheet のように機能し、画面の下部から表示され、それ自体を除く他のすべてのボタンを無効にします (画面の他の部分は薄い灰色の影でマスクされます。意味がわかります) .
私の問題は、[開く] メニューが表示されると、UIToolBar のすべてのボタンが、iOS による「自動的に非表示」のように消えてしまうことです。[開く] メニューを閉じると、ボタンが再び表示されます。私が望むのは、[開く] メニューが開いているときにボタンを表示したままにすることだけです。
iOS5 では [開く] メニューのスタイルが異なるため、この問題は iOS6 (もちろん iPhone) でのみ発生します。この動作を変更できるかどうかはよくわかりません。ただし、Adobe PDF リーダー アプリは私のものと同じことをしているように見えますが、ツールバーの項目が消えることはありません。
Open In メニューを呼び出すために使用するコードは次のようなものです。
[documentInteractionController presentOpenInMenuFromRect:CGRectZero inView:self.topBar animated:YES]
self.topBar は前に述べたツールバーです。self.view、self.view.window なども試しましたが、どれも機能しませんでした。
私はsthを逃しましたか?または、何か回避策はありますか?
必要に応じてコードを追加します。
UIToolbar は XIB ファイルに追加され、次のように UIButton を使用して 1 つの UIBarbuttonItem をカスタマイズします。
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setImage:image forState:UIControlStateNormal];
button.frame = CGRectMake(0, 0, image.size.width, image.size.height);
[button addTarget:self action:@selector(doSth) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *tItem = [[UIBarButtonItem alloc] initWithCustomView:button];
そして、UIToolbar の items 配列に tItem を追加します。
NSArray *items = [NSArray arrayWithObject:tItem];
topBar.items = items;
「doSth」メソッドが行うことは 1 つだけです。UIDocumentInteractionController を初期化し、[開く] メニューを表示するだけです。
UIDocumentInteractionController documentInteractionController = [UIDocumentInteractionController interactionControllerWithURL:fileURL];
[documentInteractionController presentOpenInMenuFromRect:CGRectZero inView:self.topBar animated:YES];
もちろん、ツールバーにはさらに多くのバー ボタン項目があります。そのため、[開く] メニューが表示されると、すべてのボタンが「非表示」になります。Apple は設計上これを行う可能性があると思いますが、この動作を変更するための回避策があるのではないかと考えています。