我开始为我的笔记网站制作一个Mac应用程序。此应用程序基于菜单栏中的弹出窗口。在popover中我有一个文本字段,但它虽然被激活但是不可编辑。通过右键单击粘贴例如可以工作...如何使这个popover互动?目前,当我按下一个键时,只播放mac os的错误声音。
感谢您的帮助!
Code:
- (void)awakeFromNib
{
active = false;
statusItem = [[NSStatusBar systemStatusBar]
statusItemWithLength:NSVariableStatusItemLength];
[statusItem setHighlightMode:YES];
[statusItem setTitle:[NSString
stringWithString:@"test"]];
[statusItem setEnabled:YES];
[statusItem setToolTip:@"test"];
[statusItem setAction:@selector(StatusClicked:)];
[statusItem setTarget:self];
}
- (void)StatusClicked:(id)sender {
if(!active) {
[[self popover] showRelativeToRect:[sender bounds] ofView:sender preferredEdge:NSMaxYEdge];
active = true;
}
else {
[popover close];
active = false;
}
}
该视图包含一个简单的多行文本NSTextField。
如果使用弹出窗口不可能,是否还有其他可能性来实现这一点?哪些元素是例如FaceTab(用于菜单栏的Facebook)使用,因为文本字段是可编辑的。
答案 0 :(得分:0)
看起来你正在制作一个“代理”应用程序,除了StatusItem之外没有其他用户界面。您可能在Info.plist中设置了LSUIElement
标志。 (基本上,它允许创建没有菜单栏的应用程序)。
它对“最前面的应用程序”和“关键窗口”的反应也有重要影响。在“statusClicked”方法中,您可能想要添加:
[NSApp activateIgnoringOtherApps:YES];
以便您的应用真正激活。
(当然,如果您没有编写LSUIElement /代理申请,我的所有评论都无关紧要。)