Попробуйте установить canCancelContentTouches
из scrollView
в NO
и delaysContentTouches
в YES
.
РЕДАКТИРОВАТЬ:
Я вижу, что это похожеЗдесь можно получить ответ на вопрос Перетащите и разверните Какао на iPhone (ответ точно такой же).
Если пользователь нажимает на кнопку-101, то удерживает signView
(примерно 0,3-0,5).секунд) затем вызывается метод touchesBegan:
представления, и все события с этого момента переходят к signView
до вызова touchesEnded:
.
Если пользователь быстро проведет пальцем по signView
, тогда UIScrollView
over.
Поскольку у вас уже есть подкласс UIView
с реализованным методом touchesBegan:
, возможно, вы могли бы как-то указать пользователю, что ваше приложение готово к тому, что он подпишет (' green light ' эквивалент).
Вы также можете использовать touchesEnded:
, чтобы отключить зеленый свет .
Возможно, было бы лучше, если бы вы добавили signImageView
как subView
из signView
(вместо customScrollView
) и скрыли его при срабатывании touchesBegan:
).Вы бы добавили signView
к customScrollview
в том же месте, где вместо этого добавили signImageView
в существующий код.
С этим вы добьетесь, что на этом месте фактически будет только один subView
(для лучшегоэффективность передачи касаний. Этого эффекта зеленого света можно добиться, если скрыть signImageView
в touchesBegan:/touchesEnded:
Если такое поведение приложения (задержка 0,3-0,5 с) неприемлемотогда вам также нужно будет создать подкласс UIScrollView
. Там может помочь метод переопределения UIScrollView
touchesShouldBegin:
, полученный от Виньеша. Там вы могли бы обнаружить, было ли касание, полученное в signView
, и передать его этому виду.немедленно.