Докоснете събития в подклас на UIView като подизглед на UIScrollView

Приложих собствен персонализиран подклас на UIView и отмених метода drawRect:.

В моя персонализиран изглед също искам докосванията на дръжката, така че отмених и touchesBegan, touchesMoved и touchesEnded.

Това работи добре, но ако броят на изгледите на екрана се увеличи, тогава трябва да използвам UIScrollView като основен изглед на моя UIViewController.

След като моят персонализиран UIView стане подизглед на UIScrollView, тогава той не получава събитията за докосване. Въпреки че движа пръста си в моя персонализиран UIView, изгледът за превъртане се превърта (всички мои събития с докосване отиват към UIScrollView).

Как да реша този проблем?


person user2217812    schedule 26.07.2013    source източник


Отговори (2)


Има няколко подхода, които можете да опитате:

  1. Опитайте да зададете следните свойства на UIScrollView:

    scrollView.delaysContentTouches = NO;
    scrollView.canCancelContentTouches = NO;

    Вижте подобни SO въпроси/отговори тук, тук.

  2. Приложете hitTest:withEvent:. Вижте тук, тук.

  3. Използвайте UIGestureRecognizer. Вижте тук, тук.

Аз лично бих препоръчал използването на UIGestureRecognizer, но това зависи от вашата конкретна ситуация (всяка от тези опции може да работи добре за вас).

person Steph Sharp    schedule 27.07.2013
comment
Имам точно същия проблем. Добавянето на delaysContentTouches кара превъртането да не работи - person doxsi; 13.05.2016
comment
Опитах първия подход. Точно това исках, благодаря много. - person MrDEV; 11.01.2018

Погледнете този отговор от друг въпрос: https://stackoverflow.com/a/4629821/193254

Ще трябва да подкласирате и scrollview и да приложите този hitTest: метод.

person Andrei Stanescu    schedule 26.07.2013