Фокус неправильно сохранен Львом - PullRequest
0 голосов
/ 20 марта 2012

Я очень ценю ответ на этот вопрос, но не могу позволить себе награду (!).

Здесь у нас очень простой графический интерфейс: пользователь просто вводит исходное слово и целевое слово в два текстовых поля, а затем нажимает кнопку.Затем происходит много жужжания, и через полсекунды показан ответ.Пользователь продолжает делать это, пока не надоест, а затем закрывает приложение.Естественно, когда приложение перезапускается, основное внимание должно быть сосредоточено на источнике, и я надеюсь, что есть более аккуратный способ достижения этого, чем описанный.Приведенный ниже комментатор подтвердил мое ощущение, что проблема заключалась в том, что проблема была в стойкости льва, что является реальной неприятностью в таких простых случаях, как этот.

Я установил NSTextField в качестве первого ответчика (используя makeFirstResponder окна) в awakeFromNibметод простого класса 'controller' в простом приложении Cocoa в Xcode 4.3, работающем под Lion.

makeFirstResponder работает нормально при первой загрузке приложения после перезагрузки, но при каждом повторном запуске фокус устанавливаетсядо последнего доступного поля.(Я попытался соединить выход initialFirstResponder окна с нужным NSTextField, но получил ту же проблему).

Я наконец исправил это, вызвав функцию инициализации из делегата NSApplication и поместив туда вызов makeFirstResponder.

Исправление немного запутано - я добавил глобальную переменную в контроллер и инициализировал ее для себя в awakeFromNib.

Я добавляю информацию о том, что часть приложения Какао проста,но большая часть этого - масса STL-файлов в .cpp файлах, портированных из Windows.

1 Ответ

1 голос
/ 24 марта 2012

Снимите флажок «Восстанавливаемый» в инспекторе атрибутов для вашего окна в IB. Конечно, у вас не будет других действий, которые вы получаете с восстанавливаемым окном, таких как запоминание его положения и размера.

...