2014-12-01 2 views
4

Я только что столкнулся с действительно странным сценарием и не могу найти никакой информации об этом в другом месте. Когда Xcode разбивается на мои точки останова, вся клавиатура для всей системы не отвечает. Я могу переключиться на другое приложение, но никакие нажатия клавиш не записываются. Сам Xcode не отвечает на ввод с клавиатуры.Отсутствие ответа клавиатуры, когда в точке останова Xcode (Mac)

Кто-нибудь еще видел это?

Я запускаю 10.10.1 и Xcode 6.1.

+0

В вашем приложении используется крант или что-то в этом роде? –

+0

Нет, но я проследил это немного дальше. Я пытаюсь отлаживать действие, вызванное событием меню. Отладчик работает так, как ожидалось, когда срабатывает действие меню, но мое действие открывает NSOpenPanel с использованием beginWithCompletionHandler: - как только я пытаюсь сломать обработчик завершения, я не могу использовать клавиатуру (общесистемную). Все вызовы, вызванные этим обработчиком, выглядят одинаково. Вне этого отладчик ведет себя как ожидалось (как и все другие приложения). – greg

+0

Является ли ваше приложение изолированным? Если это так, открытая панель запускается с помощью Powerbox, а не вашего приложения. Не знаете, как это может взаимодействовать. –

ответ

0

Основываясь на комментариях выше, казалось бы, эта проблема связана с деталями Powerbox. Чтобы объяснить далее: мое приложение изолировано и вызывает NSOpenPanel. При разрыве (точка останова Xcode) в блоке завершения NSOpenPanel я испытываю системные потери ввода клавиатуры.

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

Значительная часть этого предположения, так как у меня нет фактического кода Powerbox и вы не можете войти в него, но, похоже, он подходит.

Я работал над своими проблемами отладки, используя инструкции печати и перешагнув код с открытым инспектором переменных. Вход мыши продолжает функционировать, поэтому вы можете щелкнуть правой кнопкой мыши (если у вас есть двухкнопочная мышь) в переменной и напечатать ее описание как минимум.

Спасибо за помощь. Кен.

UPDATE Я теперь задерживая выполнение любого из моих действий после NSOpenPanel использованием dispatch_after. В моей системе задержка в 1 секунду делает трюк. Мне действительно не нравится добавлять произвольные задержки, но это, похоже, работает.

Смежные вопросы