我有一个菜单应用程序,我从一个菜单项启动一个 NSPanel:当用户单击菜单项时,我懒惰地实例化一个自定义 NSWindowController(只是第一次),然后我显示它调用 showWindow:
自定义 NSViewController 链接到一个 xib 文件:
这就是我创建它的方式:
// @property (nonatomic,strong) AddFeedController* addFeedController;
- (AddFeedController*) addFeedController
{
if (!_addFeedController)
{
_addFeedController = [[AddFeedController alloc]initWithWindowNibName:@"AddFeedController"];
}
return _addFeedController;
}
问题是,如果我尝试在这两个文本字段之一中粘贴一些文本,它不会粘贴任何内容并且会发出哔哔声。
编辑
我设法恢复了原始菜单(我不得不从另一个项目的 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];
}
第一次面板立即出现,没有问题。但是当我关闭面板并尝试第二次启动它时,它不会出现。