UIScrollView的分页滑动(page可以不一个屏幕大小)

来源:互联网 发布:java 获取对象地址 编辑:程序博客网 时间:2024/05/16 01:29

1.首先建一个MySubview.h

#import<UIKit/UIKit.h>

@interface MySubview :UIView{

}

@property (nonatomic,retain)UIScrollView *receiver;

@end

2.实现MySubview.m

#import"MySubview.h"

@implementation MySubview

@synthesize receiver;


- (void)dealloc {

self.receiver = nil;

    [super dealloc];

}


- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {

    if (point.x>0&&point.x<360.0&&point.y>0.0&&point.y<150.0) {

        UIView* child =nil;

        if ((child = [super hitTest:point withEvent:event]) == self){

            if (point.x<120) {

                for (UIView *v in self.receiver.subviews) {

                    if (v.tag==((self.receiver.contentOffset.x/120)+101)) {

                       return v;

                    }

                }

            }elseif(point.x>240){

                for (UIView *v in self.receiver.subviews) {

                    if (v.tag==((self.receiver.contentOffset.x/120)+103)) {

                       return v;

                    }

                }

            }

            returnself.receiver;     

        }

        return child;

    }else{

       return [super hitTest:point withEvent:event];

    }

}

@end

这里就是可以让显示在屏幕中的scrollview中的button都接受到触摸事件,而不是单纯的scrollview size范围内。

怎么使用呢?

这里是横屏的,所以坐标有些大。

            myscrollview=[[UIScrollViewalloc]initWithFrame:CGRectMake(120,0, 120, 175)];

           myscrollview.backgroundColor=[UIColorclearColor];

            myscrollview.contentSize=CGSizeMake(720,175);

            myscrollview.clipsToBounds=NO;//可以不受size限制


            mysub=[[MySubview alloc]initWithFrame:CGRectMake(30,90,360,175)];

            mysub.clipsToBounds=YES;

            mysub.backgroundColor=[UIColor clearColor];

            [listbackview addSubview:mysub];

            mysub.userInteractionEnabled=YES;

            mysub.receiver=myscrollview;


这时候,就可以向scrollview上添加button了~~