2015-06-22 2 views
1

У меня есть NSTextField, который выполняет автореализацию. Его текст сосредоточен.Курсор не обновляется в NSTextField при его изменении при изменении размера NSWindow

Когда я начинаю печатать в поле, а затем изменить размер охватывающую NSWindow, курсор остается там, где это в, а не переместились в соответствующее место:

cursor is way on the left while it should be placed at the end of the text

Я также сделал демонстрационный проект XCode эта проблема: https://www.dropbox.com/sh/cohhmslyl9ti43b/AAC6ULteopsQCMDsEArJU15Ta?dl=0

Кто-нибудь знает, что здесь происходит?

+0

Я представил это как ошибку по требованию Apple. Идентификатор - 21541483. –

+0

От Apple: * «Мы полагаем, что эта проблема была рассмотрена в последней версии бета-версии OS X v10.11. Это предварительная версия OS X версии 10.11. См. Примечания к выпуску для получения полных инструкций по установке Протестируйте с этим выпуском. Если у вас все еще есть проблемы, предоставьте любые соответствующие журналы или информацию, которые могут помочь нам исследовать. "* –

ответ

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

+0

Спасибо, он работает, но выбирает содержимое текстового поля. Что вы думаете о документах, которые говорят: «Используйте метод NSWindow makeFirstResponder:, а не этот метод, чтобы сделать объект первым ответчиком. Никогда не вызывайте этот метод напрямую». *? –

+1

Хм не читал, что :) Мое решение должно быть изменено. Вместо того, чтобы сделать его первым ответчиком, найдите способ сфокусировать NSTextField? У меня нет моего Macbook w/me, поэтому я не могу заглянуть в него до конца –

+0

Я отредактировал ваш ответ на основе: http://stackoverflow.com/questions/764179/focus-a-nstextfield Это работает отлично сейчас, еще раз спасибо! –

Смежные вопросы