0

Mac OS 10.6.8 で実行しているココア アプリケーションがあります。アプリケーションを終了するために、アプリケーションのアップル メニューにエントリを追加しています。コードは次のようになります。

item = [menu addItemWithTitle: @"Quit Myapp" , NSLocalizedString(@"Quit", nil), applicationName] action:@selector(terminate:) keyEquivalent:@"q"];

[item setTarget:NSAPP];

さて、私の問題は、を使用してモーダル ダイアログを開くrunModalNSOpenPanel、この終了メニュー項目がまだ有効になっていることです。残りのメニュー項目は通常どおり無効になっています。理由がわかりません。

メニュー項目のターゲットが NSApp ではなく、別のココア オブジェクトになるように上記のコードを変更すると、問題はなくなります。

それが既知の問題であるかどうか、誰かが私に知らせてくれませんか。メニュー項目のターゲットとして NSApp を設定するのは間違っていますか?

4

2 に答える 2

0

Interface Builder のアプリケーション メニューを使用してみませんか?

于 2012-04-19T14:39:28.710 に答える
0

これを行うことはおそらく悪い考えであるという他の人たちに同意します。nilとはいえ、レスポンダーチェーンをターゲットにするようにターゲットを設定 (またはそのまま) します。これにより、モデル ウィンドウが表示されているときに無効になる可能性があります。

アップデート:

うーん。新しい MainMenu NIB を確認すると、Quit メニュー項目が実際にアプリケーション オブジェクトをターゲットにしていることがわかります。だから、それは問題ではないかもしれません。

ところで、上記のコード スニペットNSAPPでは、. ではなく. をターゲットにしていますNSApp

また、への引数リスト-addItemWithTitle:...はすべてめちゃくちゃで意味がありません。実際のコードを反映するように質問をクリーンアップする必要があります。

于 2012-04-22T21:48:07.610 に答える