3

私の質問はこの < question > に似ています。OP の目的は、UIBarButtonItems の配列を、バーボタンのアウトライン/ボーダーなしで navigationItem.rightBarButtonItems として表示することでした。UIButtonカスタムビューでUIBarButtonItemを初期化する彼のソリューションは、望ましい外観を与え、UIButtonターゲット/アクションパターンはメソッドの呼び出しにはうまく機能しますが、UIPopoverControllerの配置には機能しません。

私がやろうとしているのは、アクションシートをポップオーバーに表示する (つまり、iPad にアクションシートを表示する) ことと、(別のボタンから) 印刷コントローラーのポップオーバーを表示することです。項目は iPad メール アプリで行います。

問題は、actionSheet または popover を表示する方法です。

[UIActionSheet showFromBarButtonItem:bbtn animated:YES];

また

[UIPrintInteractionController presentFromBarButtonItem:printButton animated:YES completionHandler:completionHandler]

UIButton 送信者で呼び出された場合は機能しません。また、CGRect から提示する方法、例えば

[controller presentFromRect:rect inView:self.view animated:YES completionHandler:completionHandler]

ポップオーバー ポインターを正しく配置しないでください。

変換された四角形からポップオーバーを使用して表示するボタンフレームを変換しようUIView convertRect:toView:としましたが、間違っているか、フレームプロパティを持たない UIBarButtonItem スーパービューから正しく変換できません。ポップオーバーが表示されますが、ポップオーバーの矢印が選択したボタンを指していません。

4

2 に答える 2

2

ナビゲーション コントローラーのビュー座標で、変換されたボタン フレームを計算してみてください。例えば

CGRect convertedRect = [self.navigationController.view convertRect:button.bounds fromView:button];
[controller presentFromRect:convertedRect inView:self.navigationController.view animated:YES completionHandler:completionHandler];
于 2013-02-21T19:54:34.640 に答える
0

私はあなたとまったく同じ問題を抱えていました。私が見つけた 1 つの解決策は、UIBarButton アイテムの背景に完全に透明な画像を使用することです。

UIBarButtonItem *button = [[BWBarButton alloc] initWithImage:[UIImage imageNamed:imageName] style:UIBarButtonItemStylePlain target:target action:selector];

[button setBackgroundImage:[UIImage imageNamed:@"barimage"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];

これは60x60barimageの透過画像です。1x1pxの画像を使用できると思います。

幸運を!

于 2013-07-26T11:11:33.127 に答える