view的触摸事件

本文深入探讨了iOS开发中触摸事件的基本原理,包括触摸开始、移动、结束和被取消的处理方法,并详细介绍了如何实现常见的手势识别,如敲击、捏合、拖拽和轻扫,通过实例代码演示了手势识别器的创建、配置和监听过程,旨在帮助开发者高效地在应用中融入互动体验。

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

/ 触摸开始时调用
-(
void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    NSLog(@"%s",__func__);// 打印方法
}
// 触摸进行时调用
-(
void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
   
NSLog(@"%s",__func__);
}
// 触摸结束时调用
-(
void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
   
NSLog(@"%s",__func__);
}
// 触摸被打断时调用,比如 有电话过来
-(
void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
{
   
NSLog(@"%s",__func__);
}

NSArray 集合 有序
NSSet 集合 无序

touch.phase
touchs.count 枚举类型

触摸事件是从父控件传递到子控件:UIApplication ->UIWindow ->父控件->子控件
如果父控件不接受触摸事件,那么子控件也不会接收到触摸事件。注意:不是没人处理,而是由能穿到的最后一级处理
控件接收不到触摸事件的原因:
1、不接受用户交互  userIteractionEnabled = NO;
2、 隐藏 hidden = YES;
3、 透明 alpha = 0.0~0.01;
注意:UIImageVIew的userIteractionEnabled默认是NO

手势:

每一个手势识别器的用法都差不多,比如UITapGestureRecognizer的使用步骤如下
创建手势识别器对象
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] init];

设置手势识别器对象的具体属性
// 连续敲击2次
tap.numberOfTapsRequired = 2;
// 需要2根手指一起敲击
tap.numberOfTouchesRequired = 2;

添加手势识别器到对应的view上
[self.iconView addGestureRecognizer:tap];

监听手势的触发
[tap addTarget:self action:@selector(tapIconView:)];

为了完成手势识别,必须借助于手势识别器----UIGestureRecognizer

利用UIGestureRecognizer,能轻松识别用户在某个view上面做的一些常见手势

UIGestureRecognizer是一个抽象类,定义了所有手势的基本行为,使用它的子类才能处理具体的手势
UITapGestureRecognizer(敲击)
UIPinchGestureRecognizer(捏合,用于缩放)
UIPanGestureRecognizer(拖拽)
UISwipeGestureRecognizer(轻扫)
UIRotationGestureRecognizer(旋转)
UILongPressGestureRecognizer(长按)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值