UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapTapTap:)];
[self.view1 addGestureRecognizer:tapGesture];
[self.view2 addGestureRecognizer:tapGesture];
[tapGesture release];
В приведенном выше коде view2
распознаются только нажатия . Если я закомментирую третью строку, то нажатия на view1
распознаются. Если я прав, и вы можете использовать распознаватель жестов только один раз, я не уверен, является ли это ошибкой или просто нужна дополнительная документация.
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didPressed:)]; [self.view1 addGestureRecognizer:tapRecognizer]; [self.view2 addGestureRecognizer:tapRecognizer];
Выходное представление view1 не имеет массива распознавателей жестов; view2 получил массив распознавателей жестовЯ обошел это, используя ниже.
Затем в моем методе handleLongPress я просто установил UIButton равным представлению распознавателя жестов и изменил то, что я делаю, основываясь на этой кнопке.
источник
Для Swift 3 на случай, если кому-то это понадобится: на основании ответа Bhavik Rathod выше.
источник
getGestureRecognize
потому что это то, что делает эта функцияМы можем сделать что-то вроде этого, это легко и просто
1) создайте функцию, как показано ниже в вашем контроллере (эта функция вернет GestureRecognizer)
2) теперь установите этот распознаватель в нескольких представлениях
источник
setNumberOfTapsRequired:1
не нужнаНет, вы не должны прикреплять распознаватели жестов к более чем одному представлению.
Эта явная информация содержится в документации Apple:
Руководство по обработке событий для iOS - распознаватели жестов Apple Developer Library
Хотя другие отмечают, что в некоторых случаях они могут работать, это явно противоречит документации и может измениться в любой будущей версии iOS.
Что вы можете сделать, это добавить отдельные распознаватели жестов к представлениям, которые вы хотите отслеживать, и они могут совместно использовать общее действие.
источник
Хорошо, если кто-то не хочет писать код для добавления представления жестов для нескольких кнопок, как, например , ответил kwalker выше, и хочет сделать это через Interface Builder, это может вам помочь.
1) Вы можете добавить распознаватель жестов длительного нажатия из библиотеки объектов так же, как добавляете другие объекты, такие как UIButtons и UILabels.
Первоначально я использовал только один
2) Установите ссылки на выходы
UIButton
и отправьте действия с владельцем файла.источник
если у вас есть фиксированный вид, я предлагаю вам сделать что-то вроде этого
таким образом уменьшится несколько разных бесполезных переменных
источник
Вы можете создать общее расширение для просмотра, чтобы легко добавлять распознаватели жестов. Это всего лишь пример, но это может выглядеть так
Чтобы добавить распознавание в 2 касания в виде, вы просто позвоните:
Вы также можете легко добавить распознаватель пролистывания
и так далее. Просто помните, что цель должна быть связана с селектором.
источник
Переопределить класс на '
<UIScrollViewDelegate>
'И используйте этот метод в классе .m:
Этот метод поможет вам включить несколько пролистываний в одном представлении.
источник
Как насчет перезаписи (воссоздания) вашего GestureRecognize каждый раз, когда вы добавляете распознаватель жестов, указывающий на одну и ту же функцию. В приведенном ниже случае это работает. Я использую IBOutletCollection
Свифт 2:
источник
Вы можете сделать это с помощью этого кода мои представления, которые являются изображениями в XIB.
источник
500
все теги ваших просмотров, а затем вычитать500
? Почему бы просто не начать свои теги с1
(или даже0
) вместо501
?1
его просто я скопировал этот код из моего приложения, откуда я его даю501
. Но да, не давайте0
bcoz, я где-то читал, что это всегда указывает на родительский взгляд, так что это создаст осложнения, поверьте мне, я столкнулся с этим.