Не отвечающие элементы пользовательского интерфейса после закрытия NSWindow
На прошлой неделе я потратил много времени на возни со следующей проблемой. Я решил это, но так как я не мог найти ответ здесь, и я хочу поделиться своим решением для всех, кто сталкивается с этим.
Проблема: мое приложение работает в фоновом режиме (menubar) и его основной NSWindow
содержит все настройки моего приложения. Вы закрываете NSWindow
нажав кнопку закрытия в верхнем левом углу. После закрытия NSWindow
и вновь открыв это, все NSControl
с визуально не отвечали. Действия работали соответственно, но они не обновлялись.
Я попробовал следующее:
- Снятие отметки "Отпустить при закрытии" в IB для
NSWindow
- перезарядка
NSWindow
из НИБ - Сильные ссылки для всех
NSControl
s - Звонок "Стань первым респондентом" на
NSControl
s - Перезагрузка всех родителей
NSView
s - Реализация всех делегатов, соединяющих каждый
NSControl
(Работал наNSControl
, но было слишком много работы, чтобы использовать его для всех и каждого) - Отключение, а затем повторное включение
NSControl
s
Я опубликую свое решение ниже для записей.
1 ответ
Моим решением этой проблемы было создание подкласса NSWindow
и переписать следующие методы:
- (void)performClose:(id)sender{
[self orderOut:nil];
}
- (void)close{
[self orderOut:nil];
}
Теперь NSWindow
скрыт / упорядочен, и вам просто нужно вернуть его обратно при отображении.