我有一个应用程序,打开popover NSTextField.文本字段不可编辑.文本字段的行为设置为Editable.我仍然可以粘贴和复制文本到这个字段,但我无法编辑它.
谁知道,哪有什么不对?
我试图让NSPopover自动显示在状态栏中的图标下方,这是用户第一次安装我的应用程序.像谷歌驱动器一样:

我正在使用提到这个答案的确切代码,它可以完美地用于手动显示弹出窗口(例如,在用户单击时).为了让popover自动显示,我在方法的末尾添加了以下行:调用到现在,这有时完美地工作(弹出窗口出现在状态栏中的图标的正下方),但其他时候弹出窗口显示在我屏幕的左下角.如果我等待几秒然后执行该行代码(例如,通过),它的工作更加一致.但仍然偶尔失败并显示我的屏幕底部.applicationDidFinishLaunching[self.controller menuletClicked:1]showRelativeToRect...dispatch_after...
这表明某些东西没有"准备好"?(正如这个问题所示) - 但我检查过popover对象不是nil,并且矩形的边界看起来很好.我还添加了一个loadView来尝试强制加载,但似乎没有任何效果!
让NSPopover自动显示的正确方法是什么?或者如何确保它出现在正确的位置?谢谢!!
我正在玩一个想法,基本上我想要一个带有NSPopoverController的NSStatusItem.我读到了人们遇到的所有问题,但我只是想尝试一下.现在还有一个干净的方法吗?我见过的所有版本都至少有一年的版本和suuuuper hacky.
到目前为止这是我的方法,但如果我在状态栏中点击我的应用程序没有任何反应......
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
self.statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];
//[self.statusItem setView:view];
[self.statusItem setTitle:@"Test"];
[self.statusItem setHighlightMode:YES];
[self.statusItem setAction:@selector(activatePopover:)];
}
-(IBAction)activatePopover:(id)sender
{
BOOL isEnabled = NO;
if (isEnabled) {
[self.popover showRelativeToRect:NSMakeRect(0, 0, 50, 50) ofView:statusItem.view preferredEdge:NSMinYEdge];
} else {
[self.popover close];
}
}
Run Code Online (Sandbox Code Playgroud)
任何想法如何运行?
谢谢