我在.xib文件中有一个自定义视图,我将其用作contentViewController
的{{1}}。视图中有几个MAAttachedWindow
。
当我第一次打开NSTextField
时,一切都很好。文本显示在所有相关文本字段中。然后,如果我关闭窗口(将其设置为MAAttachedWindow
),然后再次调用它(使用与nil
相同的自定义视图重新初始化),则返回最后contentViewController
个文本字段现在是空白的。
奇怪的是,如果我点击“空”文本字段,它会显示正确的文本。只要此文本字段具有焦点,就可以对其进行编辑和行为。一旦其他内容变为firstResponder
,文本就会再次消失。
更新:
firstResponder
s。答案 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之前尝试重新签名所有第一响应者。