Я обнаружил, что в OS X Lion можно перевести мультитач-приложение Cocoa в странное состояние, когда система обнаруживает жест (например, переключение пробелов или переход в Exposé). По сути, я в конечном итоге вижу касания с фазами NSTouchPhaseBegan и NSTouchPhaseMoved, но когда начинает действовать жест, я больше не получаю никакой информации об этих событиях касания (никаких касаний, закругленных или касаний отмененных).
Мне интересно, могу ли я что-нибудь сделать, чтобы обнаружить, что эти события были отменены, и я должен убрать их визуальные аналоги с экрана. Это действительно заметно с жестом пяти пальцев, который инициирует управление полетом; Я получаю на экране пять шариков, представляющих мои касания, они немного двигаются, начинается управление полетом, и шарики застревают на экране, потому что я никогда не получаю касания Отменено за эти касания (а другие касания - это новые касания, с разные адреса памяти).
Итак, справочная информация: подкласс NSView с [self setAcceptsTouchEvents:YES]
и [self setWantsRestingTouches:YES]
. Я пытался прослушать уведомление NSWorkspace, которое помогло бы мне определить, когда нужно очищать мой словарь касаний, но, похоже, я ничего не получаю, когда система вступает во владение.