Я работаю над документацией на основе какао-приложения. При запуске пользователю предоставляется «приветственная панель» (типа NSPanel
) с кнопками для общих действий, таких как «Создать новый документ» и «Открыть существующий документ». Эти действия связаны с действиями первого newDocument:
и openDocument:
первого ответчика, соответственно, точно так же, как соответствующие элементы в меню «Файл».Как мне удалить NSPanel при создании или открытии нового документа?
Все работает, как ожидалось ... с тремя оговорками:
- Приветственная панель не отвергались при создании или открытии нового документа.
- Окна документов не имеют фокуса при их создании.
- Открытые окна документов не имеют открытого файла, представленного в строке заголовка окна; Аналогично, новые окна документов не создаются с такими названиями, как «Без названия», «Без названия 2», «Без названия 3» и т. д., как и ожидалось. (Я упоминаю об этом не только потому, что это раздражает, а потому, что это может дать некоторое представление о том, что происходит не так.)
Я частично решил №1, сделав свой контроллер приложений делегатом панели приветствия. При нажатии кнопки «Открыть существующий документ» панель сбрасывает статус своего ключа (поскольку открывается диалоговое окно браузера файлов), поэтому я могу закрыть панель в методе windowDidResignKey:
делегата. Тем не менее, я не могу понять, как закрыть панель при создании нового документа, так как я не могу найти отправленное уведомление или метод делегата при создании нового документа. И, в конечном счете, № 2 по-прежнему остается проблемой, так как окна документа не получают фокуса, когда они созданы.
У меня есть только подклассы NSDocument
. Я вообще не использую пользовательский документ или оконный контроллер. Я также попытался сменить панель на NSWindow
, считая, что NSWindow
может вести себя по-разному, но те же проблемы возникают.
Возможно, кто-то еще сможет ответить на этот вопрос, но он будет (и всегда) полезен, если вы сможете создать и опубликовать пример приложения, демонстрирующего проблему. – ericg
Я бы хотел, но я не думаю, что сам код был бы уместным. Соответствующая часть интерфейса - это нить (поэтому нет кода), и приложение использует рамки документа Cocoa для выполнения своей работы, поэтому само приложение имеет относительно небольшой код. – mipadi