NSTextField не примет ввод после однократного отображения - PullRequest
0 голосов
/ 21 марта 2012

Я занимаюсь разработкой приложения для какао на основе документов.Интерфейс запуска моделируется после GarageBand: отображается экран приветствия, на котором отображается одно из двух чередующихся видов (переключаемых через сегментированный элемент управления): «Создать новый проект» и «Просмотреть последние проекты».Каждое из этих представлений управляется выделенным NSViewController (в данном случае NewProjectViewController и RecentProjectsViewController ).

Чтобы добиться этого, я подклассифицировал NSDocumentController, чтобы при запуске показывать этот «экран приветствия» вместо создания пустого документа (пустой документ не имеет смысла в моем приложении, пока пользователь не задает определенные минимальные настройки).

После запуска / первоначального создания документа, если пользователь выбирает «Создать новый проект ...» (т. Е. Новый документ), я отображаю окно, в котором повторно используется тот же интерфейс, что и на вкладке «Новый проект» вэкран приветствия путем создания экземпляра того же NewProjectViewController и добавления его представления в окно.

В обоих случаях представление контроллера представления создается из .xib.Сам контроллер представления создается программно, и его представление добавляется в существующее подпредставление окна с использованием -addSubview:.

Представление для NewProjectViewController содержит несколько редактируемых экземпляров NSTextField и другие элементы управления.

Проблема: Все экземпляры NSTextField в представлении контроллера представления будут принимать ввод текста только в первый раз;Со второго раза, когда отображается вид, попытка редактирования текста произведет системный звуковой сигнал.Текст может быть выделен (выделен), но не изменен.Кроме того, текст может быть изменен программно.

Другие элементы управления (всплывающие кнопки) могут быть изменены без проблем.

Я попытался показать окно «Новый документ» с самого начала (вместоэкран приветствия), но результат тот же: первый раз работает, второй нет.

Это проблема с первым респондентом?

1 Ответ

0 голосов
/ 14 апреля 2012

ОК, я исправил это (хотя я до сих пор точно не знаю, почему он не работал).

Я изменил обе подсказки (экран «Добро пожаловать» и окно «Новый проект») для запуска в качестве модальных окон.

Окно 'Welcome' вызывает - [NSApp abortModal] в 'Quit' и - [NSApp stopModal] в 'Choose'. Окно «Новый проект» вызывает - [NSApp abortModal] для «Отмена» и - [NSApp stopModal] для «Создать».

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

...