2012-03-01 66 views
3

我想使一个滚动视图只能在某个区域上滚动。为此,我将UIScrollView继承并覆盖touchesBegan(类似于this question)。UIScrollView子类永远不会收到touchesBegan消息的刷卡

这是我的(很简单)代码。

.H

@interface SuppressableScrollView : UIScrollView 
@end 

的.m

#import "SuppressableScrollView.h" 

@implementation SuppressableScrollView 

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    NSLog(@"touchesBegan touches=%@ event=%@", touches, event); 
    [super touchesBegan:touches withEvent:event]; 
} 

@end 

的touchesBegan只被称为该UIScrollView的不正常消耗(抽头等)的触摸。任何想法如何拦截所有的触摸?

我想我错过了某个地方的概念。

回答

5

我最近正在研究类似的UITableViews。 UITableView是UIScrollView的扩展。在挖里面的时候,我发现有4个手势识别器连接到UIScrollView来拾取滑动和其他东西。我会建议转储出手势识别器属性,看看是否有任何被自动创建(我认为他们是)。在这种情况下,我能想到的唯一选项就是将其删除,但滚动视图不会响应手势。

所以,也许你需要看看那些手势识别器和手势识别器代表,你可以使用它来看看是否有更好的地方可以进入。

P.S.一旦他们识别出正在进行的手势,手势识别器将自动开始吞咽事件。

0

如果帧大小大于内容大小,则触摸开始的方法可能不会触发。

由于它只适用于水龙头,我的猜测是滚动视图的内容大小设置不正确。

相关问题