Регистрация всех событий какао? - PullRequest
1 голос
/ 27 мая 2009

Я делаю юзабилити-тестирование и хотел бы регистрировать все события пользовательского ввода: движения мыши, щелчки, перетаскивание и ввод с клавиатуры. Мне не очень повезло, выяснить, как или найти какой-либо код для этого. Есть намеки? Я взглянул на механизмы CoreGraphics EventTap, но боюсь, что он будет слишком низкого уровня; Я хотел бы знать, на какие конкретные элементы пользовательского интерфейса нажимает пользователь.

Изменить, чтобы уточнить:

Я делаю юзабилити-тестирование, поэтому я хочу отслеживать, какие части интерфейса пользователь использует и не использует. Итак, я хочу следить за тем, чтобы «кнопка« foo »была нажата 7 раз в эти конкретные временные метки, пользователь прокручивал этот список и выбирал такой-то элемент» и так далее.

Ответы [ 4 ]

3 голосов
/ 27 мая 2009

Если вы просто ищете их для своего приложения, вы можете переопределить -[NSApplication sendEvent:]. Он отвечает за отправку всех событий, которые получает ваше приложение, соответствующим ответчикам.

2 голосов
/ 27 мая 2009

Я думаю, вам нужно будет сделать много прыщей .

Сначала попробуйте пробовать tryToPerform:with:; если это не сработает, вам нужно использовать такие методы, как mouseDown:, mouseUp:, методы перетаскивания, keyDown:, keyUp: и недокументированные методы жестов .

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

1 голос
/ 27 мая 2009

Instruments позволяет записывать события пользовательского интерфейса. Кажется, что вы можете использовать вызовы dtrace, лежащие в основе этого, для достижения цели.

0 голосов
/ 27 мая 2009

Это полностью отличается от того, о чем вы думаете сейчас, но рассмотрите что-то вроде Silverback , если вы еще этого не сделали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...