Как записать все прикосновения пользователя в приложении для iPhone

Примечание: это расширение (и уточнение) вопроса, который я задал вчера.

Я провожу исследовательский проект, в котором хочу записать все прикосновения пользователя в приложении для iPhone. После эксперимента я смогу загрузить данные и обработать их в Excel или (что более вероятно) в Matlab и определить, сколько раз они нажимали на определенные кнопки, когда они нажимали определенные кнопки и т. Д. Для этого мне понадобится знать:

а) когда они коснулись

б) Где они коснулись

в) Какой вид они коснулись

Первые два легко, но третий у меня проблемы. Я знаю, что могу сделать это, чтобы получить ссылку на UIView, который был затронут:

CGPoint locationPoint = [[touches anyObject] locationInView:self];
UIView* viewYouWishToObtain = [self hitTest:locationPoint withEvent:event];

Тем не менее, это просто даст мне указатель на представление, а не имя вида, который был затронут. Я мог бы назначить каждому представлению тег, но затем каждый раз, когда я создаю новое представление, мне нужно помнить, чтобы пометить его (или, альтернативно, записать адрес каждого представления при инициализации и зарегистрировать его при касании представления). Создание подкласса UIView и добавление автоматического тега на самом деле не вариант, так как я создаю другие UIButton и UISliders, и мне нужно будет также разделить их на подклассы, что не очень хорошее решение.

Кто-нибудь знает чистый, простой способ сделать это?

3 ответа

Решение

Какая информация вам нужна для "К какому виду они обратились"?

Возможно, вы могли бы использовать категорию, чтобы добавить метод в UIView. Этот метод генерирует строку, содержащую информацию о представлении. Такие как:

  • его тип, например, UIButton и т. д.
  • его размер и положение
  • заголовок представления, если он есть (например, заголовок кнопки)
  • тип и заголовок родительского представления
  • например, включен ли вид, в каком состоянии он находится. все, что вам нравится.

Например: "Type:UIButton Title:"Back" Rect:{3,5,40,25}" или какая-то такая строка.

Это очень чисто и дает вам довольно много информации, чтобы идти с.

Вы можете добавить категорию в UIView, которая затем будет унаследована всеми объектами UIView, но я не уверен, что она более эффективна, чем тегирование. Так как категория может переопределять методы, вы можете переопределить методы init для автоматической пометки, я полагаю.

http://macdevelopertips.com/objective-c/objective-c-categories.html

Я не уверен, что вы подразумеваете под "именем" представления. Если вы имеете в виду имя представления в Интерфейсном Разработчике, я не думаю, что оно включает это в экземпляры объектов. Вы можете использовать атрибут Tag, который включен, но это просто число, а не имя.

Другие вопросы по тегам