Глобальная мышь перемещенные события в какао

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

Те - мощные причины нормализовать. Я принял бы решение нормализовать сначала, и затем только, чтобы денормализовать конкретный таблицы после , Вы видели, что производительность становилась проблемой.

Мой опыт состоит в том, что в реальном мире, Вы не достигнете точки, где денормализация необходима, даже с очень большими наборами данных.

10
задан Colin Gislason 27 October 2009 в 01:55
поделиться

3 ответа

В SnowLeopard есть новый метод класса на NSEvent , который делает именно то, что вы хотите: + (id) addGlobalMonitorForEventsMatchingMask: (NSEventMask) обработчик маски: (void (^) (NSEvent *)) блок . Вам понадобится mask = NSMouseMovedMask .

23
ответ дан 3 December 2019 в 14:00
поделиться

Аналогичный вопрос уже задавался в StackOverflow: Как заставить прозрачный подкласс NSView обрабатывать события мыши?

Подводя итог, метод прозрачного просмотра не работал. Кварцевые метки событий кажутся лучшим ответом.

Вот несколько советов по работе с метчиками:

  1. Создайте ответвитель с помощью CGEventTapCreate .
    a) Для параметра местоположения (первого) вы, вероятно, захотите использовать kCGSessionEventTap .
    б) Для параметра размещения (второго) вам, вероятно, понадобится kCGHeadInsertEventTap .
    c) Для параметра маски события попробуйте (1 << kCGEventMouseMoved) .

  2. Создайте источник цикла выполнения с помощью CFMachPortCreateRunLoopSource , передав отвод события в качестве второго параметра.

  3. ] Добавьте источник цикла выполнения в ваш цикл выполнения. Предполагая, что вы хотите, чтобы он был добавлен в основной цикл выполнения, выполните: CFRunLoopAddSource (CFRunLoopGetMain (), sourceFromStep2, kCFRunLoopDefaultMode);

  4. Включите отвод событий с помощью CGEventTapEnable

12
ответ дан 3 December 2019 в 14:00
поделиться

Если вы хотите отслеживать мышь независимо от того, где она находится, вам нужен CGEventTap. Не существует эквивалента какао. Если вы просто хотите отслеживать это в своем приложении, вам следует более подробно объяснить, почему вы не можете этого сделать.

3
ответ дан 3 December 2019 в 14:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: