弹出可编辑的文本

时间:2012-03-26 19:53:37

标签: objective-c xcode popover

我开始为我的笔记网站制作一个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)使用,因为文本字段是可编辑的。

1 个答案:

答案 0 :(得分:0)

看起来你正在制作一个“代理”应用程序,除了StatusItem之外没有其他用户界面。您可能在Info.plist中设置了LSUIElement标志。 (基本上,它允许创建没有菜单栏的应用程序)。

它对“最前面的应用程序”和“关键窗口”的反应也有重要影响。在“statusClicked”方法中,您可能想要添加:

[NSApp activateIgnoringOtherApps:YES];

以便您的应用真正激活。

(当然,如果您没有编写LSUIElement /代理申请,我的所有评论都无关紧要。)