2012-01-30 4 views
3

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

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

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

, но теперь scrollView мешает.

Я упомянул об этом сообщении о СА.

How can a superview interecept a touch sequence before any of its subviews?

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

Что делать?

ответ

0

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 
+0

Я бы определенно проверял это решение, но тем временем я пытался подклассифицировать ScrollView и переопределить hitTest и проверить для tapCount. если его 1, верните надпись в противном случае. Но можете ли вы сказать мне, почему tapCount выходит на ноль? –

Смежные вопросы