2016-04-08 2 views
0

Я написал проект, который работает в качестве фонового приложения, и у меня есть эта небольшая проблема.Какао - меняющиеся пространства спонтанно

Скажем, у меня есть 3 открытых рабочие столы (пробела) на моем макинтоше:

  1. пространство с открытой NSWindow из моего проекта
  2. пустого пространства без каких-либо открытых приложений папки
  3. пространства с, например, открытой папкой

Я в настоящее время на пространстве номером 1.

я красть 3 пальца слева Sw itch для пустого пространства, а затем снова для переключения в пространство с открытой папкой (которая сразу же получает фокус).

Затем я прокручиваю 3 пальца вправо, чтобы переключиться с 3-го места на 2-й, и что происходит, так это то, что он (ИМО) знает, что на нем нет ни одного NSWindow, поэтому он переключается на 1-е пространство (без я даже касаюсь сенсорной панели), и NSWindow из моего приложения теперь сосредоточено.

Мой вопрос - как предотвратить это? Я имею в виду, я не помню, чтобы установить такую ​​вещь нарочно (мое приложение основано на получении текущего сфокусированного NSWindow, но только тогда, когда пользователь нажимает на окно).

ответ

0

Я подозреваю, что ваше приложение считается активным при первом переключении в космос 2. Затем, когда вы переключаетесь обратно с места 3 на 2, ваше приложение повторно активируется (поскольку оно было последним активным в этом пространстве), что делает окно вашего приложения основным/ключевым окном, а по умолчанию - переключиться на пространство окна, когда оно станет основным/ключевым.

Вы можете изменить поведение системы с помощью системных настроек> Управление миссией> При переключении на приложение переключитесь в пространство с открытыми окнами для приложения.

Вы можете изменить поведение своего приложения, установив свойство collectionBehavior окна, чтобы включить NSWindowCollectionBehaviorMoveToActiveSpace, хотя это приведет к тому, что окно вашего приложения переместится в пространство 2. Это также можно установить в IB, используя инспектор атрибутов.

+0

Спасибо, Кен, но есть ли способ программно предотвратить это, не перемещая мое окно приложения в активное пространство? Я нахожу это довольно странным, поскольку другие приложения не ведут себя одинаково. – Ancinek

+0

Действительно ли это тот случай, что при первом переключении в космос 2 ваше приложение все еще активно? Вы можете указать в строке меню. Кроме того, можете ли вы воспроизвести это с помощью нового, простого проекта Cocoa? Если новый проект не воспроизводит его, вам нужно изучить, что вы сделали с вашим, что делает его другим. –

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