消失的 NSTextField 文本
Posted
技术标签:
【中文标题】消失的 NSTextField 文本【英文标题】:Vanishing NSTextField Text 【发布时间】:2011-11-03 18:58:18 【问题描述】:我在 .xib 文件中有一个自定义视图,我将其用作 contentViewController
的 MAAttachedWindow
。该视图中有几个NSTextField
s。
当我第一次打开MAAttachedWindow
时,一切都很好。文本显示在所有相关文本字段中。然后,如果我关闭窗口(将其设置为nil
)然后再次调用它(重新初始化,使用与contentViewController
相同的自定义视图),最后一个firstResponder
文本字段现在为空白。
奇怪的是,如果我单击“空”文本字段,它会显示正确的文本。只要此文本字段具有焦点,就可以对其进行编辑,并且行为适当。一旦其他内容变为firstResponder
,文本就会再次消失。
更新:
更改颜色并没有改变上述行为。 在此过程中,文本颜色不会随时更改。 占位符文本也受上述行为的影响。 在此过程中的任何时候都不会发生错误。NSSecureTextField
s 不会发生这种情况。
【问题讨论】:
【参考方案1】:我第一次遇到这个问题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];
【讨论】:
谢谢!多么烦人的错误。【参考方案2】:尝试将文本字段文本的颜色更改为红色(或任何其他颜色),您可能会看到这里发生的情况。
【讨论】:
【参考方案3】:我明白了!
我只需要在关闭(并随后解除分配)MAAttachedWindow
之前从其superview
中显式删除viewController
。
【讨论】:
【参考方案4】:在将窗口设置为零之前尝试让所有第一响应者辞职。
【讨论】:
我认为这肯定行得通,但没有用。看起来可能不是firstResponder
问题,而是文本问题。以上是关于消失的 NSTextField 文本的主要内容,如果未能解决你的问题,请参考以下文章