运行时无法在工作表中编辑NSTextField

当点击一个button,我想显示一个电子邮件+密码提示与选项保存和取消的工作表。 用户界面全部设置完毕,操作已到位,表单出现并按预期取消。 问题是我不能在运行时编辑任何一个NSTextField; 它们显示为禁用,并且在打开表单时每次按键都会播放OS错误声音。 我读到的UIActionSheet是适当的,但这不是一个iOS应用程序。

文本字段已启用,并且以前一直在另一个面板中工作。 我确信IBAction链接是完整的,但我甚至不知道如何排除故障。

怎么样一张表会导致健康的NSTextField拒绝input?

// show the sheet -(IBAction)showAccount:(id)sender { [NSApp beginSheet:accountWindow modalForWindow:prefsWindow modalDelegate:self didEndSelector:NULL contextInfo:NULL]; } // cancel/hide the sheet -(IBAction)cancelAccount:(id)sender { [NSApp endSheet:accountWindow]; [accountWindow orderOut:nil]; } 

编辑:我刚刚发现,我可以右键单击并将文本粘贴到每个字段,但我不能select或删除。 看起来像NSTextFields没有得到重点,没有像往常一样接收键盘input。 我也忘记提及我的保存button调用并正确执行其相关的方法。

该视图并不一定有一个标题栏。

请参阅为什么NSWindow没有styleMask:NSTitledWindowMask不能是keyWindow?

其中的状态:如果您希望无标题窗口能够成为关键窗口,则需要创buildNSWindow的子类并覆盖-canBecomeKeyWindow,如下所示:

 - (BOOL)canBecomeKeyWindow { return YES; } 

这对我有效。

事实certificate,我偶然发现了解决办法,现在我将为后人发布…

作为工作表(NSWindow或NSPanel)使用的视图需要有一个标题栏。 只要我在界面生成器的检查器(窗口→外观→标题栏checkbox)中切换,我重新编译,NSTextFields突出显示,选项卡,并接受input,就像他们在任何其他视图。 不知道为什么标题栏有所作为,但你有它。