Cocoa 消失NSTextField文本
我在.xib文件中有一个自定义视图,我将其用作Cocoa 消失NSTextField文本,cocoa,nstextfield,first-responder,visual-glitch,Cocoa,Nstextfield,First Responder,Visual Glitch,我在.xib文件中有一个自定义视图,我将其用作MAAttachedWindow的contentViewController。视图中有几个NSTextFields 当我第一次打开MAAttachedWindow时,一切都很好。文本显示在所有相关文本字段中。然后,如果我关闭窗口(将其设置为nil),然后再次调用它(使用与contentViewController相同的自定义视图重新初始化),最后一个firstResponder文本字段现在为空 奇怪的是,如果我单击“空”文本字段,它会显示正确的文本。
MAAttachedWindow
的contentViewController
。视图中有几个NSTextField
s
当我第一次打开MAAttachedWindow
时,一切都很好。文本显示在所有相关文本字段中。然后,如果我关闭窗口(将其设置为nil
),然后再次调用它(使用与contentViewController
相同的自定义视图重新初始化),最后一个firstResponder
文本字段现在为空
奇怪的是,如果我单击“空”文本字段,它会显示正确的文本。只要此文本字段具有焦点,就可以对其进行编辑,并进行适当的操作。一旦其他内容成为第一响应者,文本就会再次消失
更新:
- 改变颜色不会改变上述行为
- 在此过程中,文本颜色在任何时候都不会改变
- 占位符文本也受上述行为的影响
- 在此过程中,任何时候都不会发生错误
- 这不会发生在
s上NSSecureTextField
我只需要在关闭(并随后取消分配)我第一次在NSSavePanel的附件视图中遇到这个问题的
MAAttachedWindow
之前,从其superview
中显式删除viewController
。
我找到的解决方案是在面板关闭之前将第一响应者移动到面板本身。以下是我的确切方法:
- (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];
}
我想这肯定行得通,但不行。看起来这可能不是第一响应者的问题,而是文本问题。谢谢!多讨厌的虫子啊。