1

メニュー アプリケーションがあり、メニュー項目から 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];
}

初めてパネルがすぐに表示されますが、問題はありません。しかし、パネルを閉じてもう一度起動しようとすると、表示されません。

4

0 に答える 0