Исчезающий текст NSTextField

У меня есть пользовательский вид в файле .xib, который я использую как contentViewController для MAAttachedWindow. В представлении есть несколько NSTextField.

Когда я открываю MAAttachedWindow в первый раз, все в порядке. Текст отображается во всех соответствующих текстовых полях. Затем, если я закрою окно (которое устанавливает его в nil), а затем вызову его снова (которое повторно инициализируется, используя то же пользовательское представление, что и contentViewController), последнее текстовое поле firstResponder теперь будет пустым.

Странно то, что если я нажму на «пустое» текстовое поле, он покажет правильный текст. Его можно редактировать, и он ведет себя соответствующим образом, пока это текстовое поле находится в фокусе. Как только что-то другое становится firstResponder, текст снова исчезает.

Обновления:

  • Изменение цвета не изменило вышеупомянутое поведение.
  • Во время этого процесса цвет текста не меняется.
  • Текст-заполнитель также подвержен вышеупомянутому поведению.
  • Во время этого процесса не возникает никаких ошибок.
  • Этого не происходит с NSSecureTextFields.

person Patrick Perini    schedule 03.11.2011    source источник


Ответы (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];
}
person Jacob Gorban    schedule 19.11.2011
comment
Спасибо! Какой досадный баг. - person FogleBird; 20.02.2013

Попробуйте изменить цвет текста текстового поля на красный цвет (или любой другой цвет), вы можете получить то, что здесь происходит.

person Himanshu A Jadav    schedule 03.11.2011

Я понял!

Мне просто нужно было явно удалить viewController из его superview перед закрытием (и последующим освобождением) MAAttachedWindow.

person Patrick Perini    schedule 06.11.2011

Попробуйте отказаться от всех первых респондентов, прежде чем установить окно на ноль.

person Michael Boselowitz    schedule 04.11.2011
comment
Я был уверен, что это сработает, но ничего хорошего. Похоже, это может быть не проблема firstResponder, а проблема с текстом. - person Patrick Perini; 04.11.2011