4

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

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

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

更新

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

4 回答 4

4

大约 5 年前,我在 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];
}
于 2011-11-19T10:02:10.793 回答
2

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

于 2011-11-03T19:03:12.690 回答
2

我得到了它!

我只需要viewControllersuperview关闭(并随后释放)MAAttachedWindow.

于 2011-11-06T00:19:01.917 回答
0

在将窗口设置为零之前,请尝试让所有第一响应者辞职。

于 2011-11-04T03:09:13.987 回答