문제

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.
도움이 되었습니까?

해결책 3

I got it!

I simply needed to explicitly remove the viewController from its superview before closing (and subsequently deallocating) the MAAttachedWindow.

다른 팁

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];
}

Try changing color of textfield text to red color (or any other color) you may get what happens here.

Try resigning all first responders before setting the window to nil.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top