1

Учитывая здесь один пример, (с ARC)Память UIGestureRecognizer

 UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onTap:)]; 

     [subView1 addGestureRecognizer:tapGesture ]; 
     [subView2 addGestureRecognizer:tapGesture]; 

Вот проблема:

subView1 не будет реагировать на tapGesture, но subView2 будет.

subView1 будет работать, если мы удалим tapGesture из subview2.

Что происходит внутри с точки зрения управления памятью? Почему дизайн не должен работать над кодом?

ответ

3

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

Вид жест распознаватель привязан. (только для чтения)

Поэтому я предполагаю, что addGestureRecgnizer: отключит повторитель, если он уже прикреплен к представлению.

+0

Нет, это не совсем так, просто посмотрите на этот пример, который я нашел в сети [net] (https://github.com/AalokParikh/pinch-and-uiguesture) –

+0

Хорошо, но это не так, как пользовательский распознаватель жестов который не включен в iOS по умолчанию? Я только заявил, что ни один из стандартных не поддерживает более одного представления (но, возможно, iOS 6 или более поздние будут иметь их, я не знаю). –

+0

Я посмотрел код в вашем репозитории GIT (почему вы взяли zip-файл вместо файлов исходного кода?), И я не вижу, как это связано с этим? Разумеется, действия распознавателя могут выполняться с несколькими видами. Первоначальный вопрос заключался в том, что для распознавания жестов в нескольких представлениях можно использовать один экземпляр распознавателя. –

Смежные вопросы