http://blog.csdn.net/ztp800201/article/details/7973036
http://blog.sina.com.cn/s/blog_7daf0a5f0100ttw7.html
pagingEnabled
当值是YES,会自动滚动到subview的边界,默认是NO
scrollEnabled
决定是否可以滚动
delaysContentTouches
是个布尔值,当值是YES的时候,用户触碰开始,scroll view要延迟一会,看看是否用户有意图滚动,假如滚动了,那么捕捉touch-down事件,否则就不捕捉, 假如值是NO,当用户触碰, scroll view会立即触发touchesShouldBegin:withEvent:inContentView:, 默认是YES
canCancelContentTouches
当值是YES的时候,用户触碰后,然后在一定时间内没有移动,scrollView发送tracking events,然后用户移动手指足够长度触发滚动事件,这个时候,scrollView发送了touchesCancelled:withEvent: 到subview,然后scroView开始滚动
假如值是NO,scrollView发送tracking events后,就算用户移动手指,scrollView也不会滚动
UIScrollView本身无法处理touch事件:
要想实现,必须对UIScrollView上的subView做touch处理
原理十分简单,好比要响应scrollView上的UIImageView,那么请创建一个UIImageVIew的子类,由这个自定义的UIImageView来处理touch事件
头文件声明如下,供参考:
#import <Foundation/Foundation.h>
@interface ImageTouchView : UIImageView {
}
@end
这个是头文件,源文件可以是这个这样子
@implementation ImageTouchView
-(id)initWithFrame:(CGRect)frame
{
}
- (BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view
{
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
}
如果想让UIScrollView响应touch事件就需要重构UIScrollView。
以下是我写的代码,以供大家参考
#import <UIKit/UIKit.h>
@interface MyScrollView : UIScrollView {
}
@end
.m文件实现
#import "MyScrollView.h"
@implementation MyScrollView
- (id)initWithFrame:(CGRect)frame
{
{
self.backgroundColor =
}
- (void)dealloc {
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
if(!self.dragging)
{
[[self nextResponder] touchesBegan:touches withEvent:event];
}
[super touchesBegan:touches withEvent:event];
//NSLog(@"MyScrollView touch Began");
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
if(!self.dragging)
{
[[self nextResponder] touchesEnded:touches withEvent:event];
}
[super touchesEnded:touches withEvent:event];
}
@end