消失的NSTextField文本

时间:2011-11-03 18:58:19

标签: cocoa nstextfield first-responder visual-glitch

我在.xib文件中有一个自定义视图,我将其用作contentViewController的{​​{1}}。视图中有几个MAAttachedWindow

当我第一次打开NSTextField时,一切都很好。文本显示在所有相关文本字段中。然后,如果我关闭窗口(将其设置为MAAttachedWindow),然后再次调用它(使用与nil相同的自定义视图重新初始化),则返回最后contentViewController个文本字段现在是空白的。

奇怪的是,如果我点击“空”文本字段,它会显示正确的文本。只要此文本字段具有焦点,就可以对其进行编辑和行为。一旦其他内容变为firstResponder,文本就会再次消失。

更新

  • 更改颜色并未改变上述行为。
  • 在此过程中,文字颜色不会随时更改。
  • 占位符文本也受上述行为的影响。
  • 在此过程中,任何时候都不会发生错误。
  • 这不会发生在firstResponder s。

4 个答案:

答案 0 :(得分:4)

我第一次遇到这个问题about 5 years ago,带有NSSavePanel的附件视图。 我发现的解决方案是在关闭之前将第一个响应者移动到面板本身。这是我的确切方法:

- (void)windowDidEndSheet:(NSNotification *)notification

    NSSavePanel *savePanel = [(XSDocument *)[self document] savePanel];
    if (!savePanel)
        return;
    // this fixes a bug where on next opening one of accessory view's text field will be blank and behave strangely
    [savePanel makeFirstResponder:savePanel];
}

答案 1 :(得分:2)

尝试将文本字段文字的颜色更改为红色(或任何其他颜色),您可能会看到此处发生的事情。

答案 2 :(得分:2)

我明白了!

我需要在关闭(并随后取消分配)viewController之前明确删除superview MAAttachedWindow

答案 3 :(得分:0)

在将窗口设置为nil之前尝试重新签名所有第一响应者。