0

ビューに追加する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 は設計上これを行う可能性があると思いますが、この動作を変更するための回避策があるのではないかと考えています。

4

1 に答える 1

0

ここでの秘密は、UIToolbar の代わりに UINavigationBar を使用することです。正式には、UIToolbars を画面の下部で使用し、UINavigationBars を上部で使用する必要があります。(ただし、iOS5 まで UINavigationBar が両端に複数の項目を持つことができなかったため、これは以前は不可能だった可能性があります。)

これは、Apple による「設計どおり」のようです。この機能が役立つ場所の例として、Dropbox アプリでファイルを表示しているときに下部のツールバーを見てください。(アイテムを非表示にしないと、[キャンセル] ボタンの継ぎ目に直接着地します。)

于 2013-03-15T00:10:16.217 に答える