Как остановить UIScrollView получать события касания от его родительского представления? - PullRequest
3 голосов
/ 30 января 2012

У меня есть UIView, содержащий UIScrollView. Предполагается, что UIView отвечает на некоторые сенсорные события, но не отвечает из-за содержащегося в нем scrollView.

Этот scrollView contentView установлен на MoviePlayer внутри OuterView. Теперь, когда я щелкаю в области, где находится MoviePlayer, сенсорные события моего OuterView не реагируют.

Я даже установил userInteraction для видеоплеера на NO.

но теперь кажется, что scrollView мешает.

Я ссылался на этот пост на самом SO.

Как суперпредставление может воспринимать последовательность прикосновений перед любым из его подпредставлений?

Но решение там, просит меня установить userInteractionEnabled на NO для scrollView Но если я сделаю это, мой масштабный снимок тоже не произойдет!

Что делать?

1 Ответ

0 голосов
/ 30 января 2012

UIScrollView перехватывает все сенсорные события, потому что он должен решить, если / когда пользователь двигал пальцем, чтобы прокрутить представление прокрутки.Возможно, вы захотите создать подкласс UIView, затем в методах

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)evt;
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)evt;
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)evt;

проверьте наличие необходимых касаний, затем перенаправьте все эти методы в ваш UIScrollViewInstance.Например:

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

@interface MyView: UIView {
    UIScrollView *scrollView;
}

@end

@implementation MyView

/* don't forget to alloc init your ScrollView init -init
   and release it in -dealloc! Then add it as a subview of self. */

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)evt
{
    /* check for a gesture */
    [scrollView touchesBegan:touches withEvent:evt];
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)evt;
{
    /* check for a gesture */
    [scrollView touchesMoved:touches withEvent:evt];
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)evt;
{
    /* check for a gesture */
    [scrollView touchesEnded:touches withEvent:evt];
}

@end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...