UIGesture возвращает UIImageView, а не пользовательское представление

Я добавил пользовательский вид в свой rootview и добавил UITapGesture. При вызове "sender.view" кода UITapGesture он больше не представляется моим пользовательским UIView, а вместо этого "sender.view" имеет тип UIImageView.

Так что действительно сложно отправлять сообщения в мой пользовательский вид, когда iOS ожидает UIView - я получаю предупреждение: "Несовместимые типы указателей, отправляющие UIView в параметр CardView (мой пользовательский вид).

Я думаю, что это связано с цепочкой ответов; Документация гласит: "Когда iOS распознает событие, она передает событие начальному объекту, который представляется наиболее подходящим для обработки этого события, например, представление, где произошло касание". - О событиях в iOS

Ключевое слово здесь "кажется" - как я могу сказать iOS, что мой пользовательский вид должен обрабатывать жест?

Вопрос: Как я могу получить sender.view для прямой ссылки на мой пользовательский вид?

Вот код ниже:

//Creates the Card's view
CardView *cardView = [[CardView alloc]initWithFrame:CGRectMake(0, 0, 67,99)];
//For Single Tap
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleSingleTapGesture:)];
[cardView addGestureRecognizer:tapGesture];
[self.view addSubview:cardView];

1 ответ

Решение

В handleSingleTapGesture: даст тебе (UITapGestureTecongnizer *)sender так что бросьте так:

CardView *card = (CardView *)sender.view;
//do you stuff with card 
Другие вопросы по тегам