Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Vanishing NSTextField Text

I have a custom view in a .xib file, which I use as the contentViewController for an MAAttachedWindow. The view has several NSTextFields in it.

When I open the MAAttachedWindow first time, everything is fine. Text shows up in all relevant text fields. Then, if I close the window (which sets it to nil) and then call it again (which reinitializes, using the same custom view as the contentViewController), the last firstResponder text field is now blank.

The strange thing is that if I click the "empty" text field, it shows the correct text. This can be edited, and behaves appropriately as long as this text field has focus. As soon as something else becomes firstResponder, the text vanishes again.

Updates:

  • Changing the color did not change the aforementioned behavior.
  • The text color does not change at any time during this process.
  • Placeholder text also is subject to the aforementioned behavior.
  • No errors are occurring at any time during this process.
  • This does not happen to NSSecureTextFields.
like image 927
Patrick Perini Avatar asked Feb 23 '23 12:02

Patrick Perini


1 Answers

I first encountered this problem about 5 years ago with accessory view of a NSSavePanel. The solution that I've found was to move the first responder to the panel itself, before it's closed. Here's my exact method:

- (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];
}
like image 60
Jacob Gorban Avatar answered Mar 04 '23 05:03

Jacob Gorban