質問
アクセサリビューと3つのボタンを備えたNSAlertがあります。ボタンは右揃えではありませんが(LTRシステムの場合)、以下に示すようにアクセサリビューの幅まで拡大しているようです。
また、アクセサリビューを削除すると、3つのボタンが右に正しく配置されません
この問題を解決するにはどうすればよいですか?自分でコードを書いているNSAlertを置き換えたくないのですが、なぜ車輪の再発明をしなければならないのですか?
使用するコードは
解決
これがアラートの現在のデフォルトレイアウトです。 3つのボタンがあるアラートは、一般的な使用例が次のとおりであるため、処理が異なります。
- 最初のボタン(例:OK)は確認を表します
- 2番目のボタン(キャンセルなど)はキャンセルを表します
- 3番目のボタン(ペンギンを殺すなど)は、代替アクション、場合によっては破壊的なアクションを表します。
3番目のボタンは左側に配置されており、先に進む(最初のボタン)および停止する(2番目のボタン)とは異なるアクションを表していることを明確にしています。
これは一部のAppleアプリケーションで見られます。ページ内:
テキストエディットの場合:
また、 NSAlertのドキュメントには次のように記載されています:
標準のアラートレイアウトは、将来のシステムソフトウェアバージョンで変更される可能性があります。したがって、カスタムアラートレイアウトに依存している場合は、MacOSの将来のリリースでレイアウトが期待どおりに機能することを確認する必要があります。
したがって、将来的には、3つのボタンすべてを右に配置するか、最初のボタンのみを右に配置し、残りの2つのボタンを左に配置するかを決定する可能性があります。これが、NSAlertがボタンの位置や配置を指定するためのパブリックAPIを提供していない理由です。
本当に別のレイアウトが必要な場合は、自分でデザインする必要があるようです。