IOS系列——视图的事件响应

来源:互联网 发布:cloudtv for mac 编辑:程序博客网 时间:2024/06/06 20:17
本来在网上找一个对一张image图片事件响应的例子,但是找了一下,发现这么一个东西,目前以我的理解和能力开看,好像可以对所有的view响应事件  比如imageView,  ScrollView  等等,都可以添加事件响应,比如说我们有时候输入TextFile之后,我们想退出键盘,除了用end那个什么方法之外,可以实现点击整个View任意地方都可以退出
scrollView1=[[UIScrollView alloc]initWithFrame:CGRectMake(173, 477, 693, 164)];        scrollView1.clipsToBounds=true;        [self.view addSubview:scrollView1];        [scrollView1 setContentSize:scrollviewsize];                UITapGestureRecognizer *g = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(bigimage)];        [scrollView1 addGestureRecognizer:g];


方法自己去定义 bigimage  

在这里也说一下,scrollviewsize 是一个宏定义  替代  

CGSizeMake(176 * 5,164)



还有一个是对imageView响应事件的,我还没时间看,先复制下来留着


UIScrollView本身无法处理touch事件
要想实现,必须对UIScrollView上的subView做touch处理
原理十分简单,好比要响应scrollView上的UIImageView,那么请创建一个UIImageVIew的子类,由这个自定义的UIImageView来处理touch事件
头文件声明如下,供参考:
#import <Foundation/Foundation.h>

@protocol ImageTouchDelegate
-(void)imageTouch:(NSSet *)touches withEvent:(UIEvent *)event whichView:(id)imageView;
@end

@interface ImageTouchView : UIImageView 
{
        id<ImageTouchDelegate>  delegate;
        BOOL delegatrue;
}
@property(nonatomic,assign)id<ImageTouchDelegate> delegate;

@end
这个是头文件,源文件可以是这个这样子

@implementation ImageTouchView
@synthesize     delegate;

-(id)initWithFrame:(CGRect)frame
{
        if (self == [super initWithFrame:frame]) 
        {
                [self setUserInteractionEnabled:YES];
                delegatrue=YES;
        }
        return  self;
}
- (BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view
{
        return YES;
}


-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
        if (delegatrue)
        {
                [delegate imageTouch:touches withEvent:event whichView:self];
        }