メニュー アプリケーションがあり、メニュー項目から NSPanel を起動しています。ユーザーがメニュー項目をクリックすると、カスタム NSWindowController を (初めて) 遅延してインスタンス化し、showWindow を呼び出して表示します。
カスタム NSViewController は xib ファイルにリンクされています。
これは私がそれを作成する方法です:
// @property (nonatomic,strong) AddFeedController* addFeedController;
- (AddFeedController*) addFeedController
{
if (!_addFeedController)
{
_addFeedController = [[AddFeedController alloc]initWithWindowNibName:@"AddFeedController"];
}
return _addFeedController;
}
問題は、これら 2 つのテキスト フィールドのいずれかにテキストを貼り付けようとすると、何も貼り付けられず、ビープ音が鳴ることです。
編集
元のメニューを復元することに成功し (元のメニューしか認識されないため、別のプロジェクトの xib からコピーする必要がありました)、addFeedControllerアクセサーを次のように変更しました。
- (AddFeedController*) addFeedController
{
if (!_addFeedController)
{
_addFeedController = [[AddFeedController alloc]initWithWindowNibName:@"AddFeedController"];
[_addFeedController.window setLevel: NSPopUpMenuWindowLevel];
}
return _addFeedController;
}
ウィンドウを表示するメソッドも変更しました。
- (IBAction) launchFeedController : (id) sender
{
[self.addFeedController showWindow: self];
// I added these lines:
[NSApp activateIgnoringOtherApps:YES];
[self.addFeedController.window makeKeyAndOrderFront:self];
}
初めてパネルがすぐに表示されますが、問題はありません。しかし、パネルを閉じてもう一度起動しようとすると、表示されません。