Курсор не обновляется в NSTextField, так как он автоматически изменяет размеры при изменении размера вмещающего NSWindow
У меня есть NSTextField, который автоматически изменяет размер. Его текст центрирован.
Когда я начинаю печатать в поле и затем изменяю размер окружающего NSWindow, курсор остается там, где он есть, а не перемещается в соответствующее место:
Я также сделал проект XCode, демонстрирующий эту проблему: https://www.dropbox.com/sh/cohhmslyl9ti43b/AAC6ULteopsQCMDsEArJU15Ta?dl=0
Кто-нибудь знает, что здесь происходит?
1 ответ
Интересный вопрос, я никогда не применял автоматическое расположение к текстовому полю, поэтому мне было любопытно.
Мое решение было прислушиваться к NSWindowDelegate
метод, -windowDidResize
, После этого я бы проверил, было ли текстовое поле первым респондентом. Если это так, я снова установил его в качестве первого респондента, который сбрасывает курсор в правильном месте.
Код:
NSResponder *firstResponder = [[NSApp keyWindow] firstResponder];
if ([firstResponder isKindOfClass:[NSText class]] && (NSTextField*)[(NSText *)firstResponder delegate] == self.centeredText) {
[self.centeredText becomeFirstResponder];
}
Я заново загрузил проект, чтобы вы тоже могли его посмотреть: https://www.dropbox.com/s/lhsspi5gasbwq8j/CursorDoesNotUpdate%202.zip?dl=0