Возврат nil из addLocalMonitorForEventsMatchingMask: блок не подавляет события - PullRequest
2 голосов
/ 26 ноября 2011

Следующий код не подавляет перетаскивание мышью в моем приложении:

[NSEvent addLocalMonitorForEventsMatchingMask:NSLeftMouseDraggedMask handler:^(NSEvent *event) {
   return (NSEvent *)nil;
}];

Я все еще могу перетаскивать элементы интерфейса внутри приложения. Насколько я знаю, если вы вернете nil внутри блока, событие не будет отправлено в приложение. Чего мне не хватает?

1 Ответ

3 голосов
/ 26 ноября 2011

Я не совсем уверен, что вы подразумеваете под "перетаскиванием элементов пользовательского интерфейса", но я подозреваю, что эта заметка в документах :

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

- это объяснение.Различные NSResponder подклассы, такие как кнопки при нажатии, вводят "частный цикл отслеживания" , где они захватывают все события, пока не получат одно, в частности, которое завершает цикл.

Выследует поместить оператор log внутри этого блока и убедиться, что вы действительно получаете событие, переданное, когда вы ожидаете.

...