Получение события мыши в режиме супервизора

У меня есть NSScrollView, и его представление документа представляет собой подвид NSView под названием MasterPage. На MasterPage у меня есть куча (в зависимости от пользовательского ввода) подвидов (из класса с именем Page). Они расположены в формате сетки. Я пытаюсь зафиксировать NSPoint щелчка мыши на MasterPage. Он работает там, где нет подвидов, но если щелкнутая точка находится в области подвида, супервид не регистрирует ее. Есть ли способ сделать это? Я надеюсь, что в этом есть смысл.

Красная область регистрирует щелчок мыши в файле .m супервизора. Четыре подвида - нет.

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


person PruitIgoe    schedule 21.09.2011    source источник


Ответы (1)


В своем классе MasterPage вы можете переопределить NSView's -hitTest: и заставить его возвращать self, а не одно из Page подпредставлений. См. Руководство по обработке событий: путь событий мыши и планшета.

В этом примере проекта http://www.markdouma.com/developer/SubviewSuperview.zip, вы можете просмотреть журнал вызовов, чтобы увидеть, что NSView получает события. Если удерживать нажатой клавишу Alt/Option и щелкнуть, белое представление переопределит -hitTest: и вернет себя, предотвращая получение события серыми представлениями.

введите здесь описание изображения

person NSGod    schedule 21.09.2011