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

本文介绍如何在iOS应用中为UIScrollView及其子视图处理触控事件。通过添加手势识别器和自定义UIImageView子类的方式,实现了对scrollView及imageView上触摸事件的响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本来在网上找一个对一张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];
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值