【问题标题】:Editable textfield in popover not working弹出窗口中的可编辑文本字段不起作用
【发布时间】:2014-04-21 14:28:41
【问题描述】:

我正在开发一个使用弹出窗口来提供附加功能的 Mac 应用程序。我有一个弹出框打开,我需要用户输入一些文本,但我似乎无法让该字段可编辑。在 Xcode 的属性检查器下,行为设置为可编辑,其他选项与类似应用程序的设置相匹配,该应用程序在可编辑的新窗口中具有文本字段。我错过了什么?

- (IBAction)dataTransferButton:(id)sender {

[[self dataTransferPopover] showRelativeToRect:[sender bounds] ofView:sender preferredEdge:NSMaxXEdge];

_employeeCheckBox.enabled=NO;

[dataTransferPopover becomeFirstResponder];
userAccountTextField.editable=YES;
}

【问题讨论】:

  • 可能是因为popover的窗口不能成为keywindow或者popover不接受第一响应者。你检查过吗?
  • NSTextField on NSPopover 的可能重复项
  • NSPopover 上没有重复的 NSTextField。我检查了第一响应者,但这似乎不起作用。 [dataTransferPopover 成为FirstResponder];
  • 此外,我在弹出窗口中有一些正在工作的按钮和实验室。一键打开 NSPanel 供用户选择文件路径。用户做出选择后,文件路径将在标签中报告,替换一些占位符文本。
  • 这几乎肯定与 popover 的父母没有成为关键有关。你检查了吗?

标签: objective-c


【解决方案1】:

让你的应用委托实现 NSPopoverDelegate 并实现

-(void)popoverDidShow:(NSNotification *)notification
{
    [self.dataTransferPopover.viewController.view.window makeKeyWindow];
    self.dataTransferPopover.viewController.view.window makeFirstResponder:userAccountTextField];
}

您需要将文本字段设置为第一响应者而不是弹出框。

【讨论】:

  • 好的。所以我有 Master App Delegate、一个自定义视图、一个 NSPopover 和一个 Popover 视图控制器。我不确定应该在哪里附加什么。
  • 在这种情况下,您的应用委托将实现 NSPopoverDelegate。我更新了答案。
  • 这对我不起作用。关于问题可能是什么的其他想法?
  • 我尝试创建一个新窗口并将 NSTextfield 放在窗口中,但仍然遇到同样的问题(这是我在原来的应用程序中所做的事情)。另外,我尝试将它移到我的主窗口,但我仍然遇到同样的问题。 NSTextField 有什么问题吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-22
  • 2017-06-02
  • 1970-01-01
相关资源
最近更新 更多