В моем приложении у меня есть UIScrollview
, в котором пользователь может просматривать карту (.PNG) a UIImageView
.UIScrollView
используется для управления панорамированием и прокруткой по карте.
Я хочу, чтобы пользователь мог «добавлять» дополнительные точки интереса (кнопки) на карту, когда они касаются ее, чтобы сделатьДля этого я добавил прослушиватель касаний на UIScrollView
;
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGesture:)];
[myScrollview addGestureRecognizer:tap];
. Когда регистрируется касание, я создаю кнопку UIB и добавляю эту кнопку UIImageView
внутри UIScrollView
:
[plattegrondImageview addSubview:plattegrondPunt];
Таким образом, элемент хорошо прокручивается вместе с изображением (остается на месте при заданных координатах).Пока все хорошо.
Тем не менее, теперь я хочу, чтобы пользователь мог нажать «кнопку» (а затем открыть всплывающее окно для ввода комментария, например).
У меня естьдобавили цель к кнопке для прослушивания касания:
[poi addTarget:self action:@selector(puntTap:) forControlEvents:UIControlEventTouchUpInside];
Теперь к проблеме:
Всякий раз, когда пользователь нажимает на кнопку, селектор (puntTap) срабатывает правильно, нотакже срабатывает основной жест касания UIScrollview
.
Таким образом, открывается не только представление popover
, но и дополнительный элемент UIButton
, помещаемый на экран.
Теоретически логично, что UIScrollview
также регистрирует ответвление, но в этом случае это нежелательное поведение.Когда пользователь нажимает на UIButton
внутри scrollview
, сам scrollview
не должен отвечать.
Для визуализации слоев:
-> UIScrollview
-----> UIImageView
----------> UIButton
Я уже включил следующие свойства для просмотра прокрутки;
myScrollview.userInteractionEnabled = YES;
myScrollview.canCancelContentTouches = YES;
myScrollview.delaysContentTouches = YES;
Полагаю, я мог бы сделать что-то вроде хит-теста (с жестом касания UIScrollview
), чтобы проверить, не нажата ли кнопка - но, может быть, у кого-то естьЧистое решение?
(Если что-то неясно относительно способа настройки экрана, скажите, пожалуйста)
Суммировано : когда пользователь нажимает на UIButton
, GestureRecognizer
из scrollview
также стреляет!