我试图使滚动视图仅在某个区域上滚动。为此,我将UIScrollView子类化并覆盖touchesBegan(类似于this question)。
这是我(非常简单)的代码。
·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通常不会消耗的触摸(如点击)。知道怎么拦截所有的触摸?
我想我在某个地方错过了一个概念。
答案 0 :(得分:5)
我最近在为UITableViews寻找类似的东西。 UITableView是UIScrollView的扩展。在内部挖掘时,我发现有8个手势识别器连接到UIScrollView来拾取滑动和其他东西。我建议转储手势识别器属性,以查看是否有任何自动创建(我认为它们是)。在这种情况下,我能想到的唯一选择是删除它们,但滚动视图不会响应手势。
所以也许您需要查看那些手势识别器和手势识别器代表,您可以使用它们来查看是否有更好的地方可以连接。
P.S。一旦识别出正在进行的手势,手势识别器将自动开始吞咽事件。
答案 1 :(得分:1)
如果框架尺寸大于内容尺寸,则触摸开始方法可能无法触发。
由于它只适用于水龙头,我的猜测是滚动视图的内容大小设置不正确。