Как записать все прикосновения пользователя в приложении для 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, который включен, но это просто число, а не имя.