2011-11-03 80 views
4

我有一个.xib文件中的自定义视图,我使用contentViewControllerMAAttachedWindow。该视图中有几个NSTextField s。消失NSTextField文本

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

奇怪的是,如果我点击“空白”文本字段,它会显示正确的文本。只要此文本字段具有焦点,就可以对其进行编辑,并且行为恰当。只要其他东西变成firstResponder,文字就会再次消失。

更新

  • 更改颜色没有改变上述行为。
  • 在此过程中,文字颜色不会随时更改。
  • 占位符文本也受上述行为。
  • 此过程中的任何时间都不会发生错误。
  • 这不会发生在NSSecureTextField s。

回答

2

我明白了!

在关闭(并随后释放)MAAttachedWindow之前,我只需要明确地从其superview中删除viewController

2

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

+0

不好。查看我的问题中的更新。 –

0

尝试在将窗口设置为零之前先退出所有第一响应者。

+0

我以为肯定这个工作,但没有好处。看起来它可能不是'firstResponder'问题,而是一个文本问题。 –

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]; 
} 
+0

谢谢!多烦人的错误。 – FogleBird