Лист документа не отвечает на события клавиатуры

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

У меня есть окно редактирования, которое я прикрепляю к моему основному окну:

[NSApp beginSheet: criteriaEditPanel 
   modalForWindow: [self window] 
    modalDelegate: self 
   didEndSelector: @selector(criteriaEditDidEnd:returnCode:contextInfo:) 
      contextInfo: (void *)[criteriaList objectAtIndex: index]];

Панель правильно отображается в строке заголовка главного окна. Я могу манипулировать всплывающими элементами управления на панели с помощью мыши, но я не могу редактировать текстовые поля и не могу перемещаться между полями. Все остальное работает нормально. Любые идеи?

Джо


person Flyingdiver    schedule 19.08.2011    source источник
comment
До сих пор нет успеха в этом. Добавление комментария в надежде на то, что ночная толпа увидит это. Спасибо.   -  person Flyingdiver    schedule 20.08.2011
comment
Вы переопределяете что-либо, связанное с ответчиком?   -  person spudwaffle    schedule 20.08.2011
comment
Нет, не то, что я могу придумать. Но я сделал много настроек в файле xib, и мне интересно, не напутал ли я что-то там.   -  person Flyingdiver    schedule 20.08.2011
comment
Наверное. Попробуйте снять все, что говорит Отказать первому ответчику.   -  person spudwaffle    schedule 20.08.2011


Ответы (1)


Решено. Хотите верьте, хотите нет, но у вас должна быть включена строка заголовка для панели, даже если она никогда не видна при отображении в виде листа. Когда его включили в IB, ввод с клавиатуры заработал.

@spudwaffle — ни один из объектов не отмечен флажком Отклонить службу экстренного реагирования.

person Flyingdiver    schedule 20.08.2011
comment
Я понимаю, что это означает, что маска стиля окна листа (а не родительского окна) должна включать NSTitledWindowMask или установить флажок в строке заголовка IB. Кроме того, я видел эту проблему в приложении, не являющемся документом, с использованием нового (10.9) API листа NSWindow. - person Paul Collins; 01.03.2014
comment
Это верно, Пол. Панель, которую вы используете в качестве листа, а не родителя. - person Flyingdiver; 06.04.2014
comment
ПОЖАЛУЙСТА, СКОПИРУЙТЕ ЭТОТ ОТВЕТ КУДА-НИБУДЬ! - person Marek H; 30.10.2017
comment
@MarekH Кроме как здесь? Почему? - person Flyingdiver; 02.11.2017
comment
Мне потребовалось несколько поисков, пока не появился этот. Я искал первое резонирование неправильного модального окна. Моим первым ответом было окно, которое показывало модальное окно, а не само модальное окно. - person Marek H; 02.11.2017
comment
Подтверждено здесь в основанном на документах приложении 10.9 NSWindow Sheet API; это все еще проблема, по крайней мере, в macOS 10.13.4. (и, да, будущий человек, мы все думали, что были такими современными еще в 2018 году) - person Tommy; 04.04.2018
comment
Сэкономил мне много времени. На листах должна быть включена строка заголовка. Работает и на других листах (не только в документе). - person tambeen; 16.08.2018
comment
@Tommy: Вы будете рады узнать, что здесь, в удивительном будущем, то есть в 2021 году, это все еще проблема в macOS 11.1 Big Sur! (И не беспокойтесь о следующих нескольких годах, вы не поверите, как здорово обстоят дела в 2020 и 2021 годах.) - person Andrew Madsen; 15.01.2021