一、响应过程
在iOS中UIResponder类是专门用来响应用户的操作处理各种事件的,包括触摸事件(Touch Events)、运动事件(Motion Events)、远程控制事件(Remote Control Events)。而我们常用的可以响应事件的几个类:UIViewController,UIView,UIApplication都是直接继承自UIResponder。So,跟着来了解下。
在UIResponder中有四个方法:
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event;//开始触摸
- (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event;//触摸移动
- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event;//触摸结束
- (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(nullable UIEvent *)event;//触摸取消
所有进行自定义触摸处理的响应器都应该覆盖这四种方法,
我们用这四个方法来帮助我们了解下响应过程。
先写个视图,CustomView是自定的一个UIView:
- (void)viewDidLoad {
[super viewDidLoad];
CustomView *redView = [[CustomView alloc] initWithFrame:CGRectMake(10, 100, 300, 300)];
redView.name =@"红色";
redView.backgroundColor = [UIColor redColor];
[self.view addSubview:redView];
CustomView *greenView = [[CustomView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
greenView.name =@"绿色";
greenView.backgroundColor = [UIColor greenC
iOS开发:深入理解响应事件机制

本文详细探讨了iOS中响应事件的过程,从UIResponder的四个关键方法开始,解释了响应链的工作原理。通过实例分析了hitTest:withEvent:方法如何找到首个响应者,并介绍了如何利用该方法拦截并自定义事件的处理。最后,展示了如何通过重写hitTest:withEvent:来改变事件的传递路径,实现特定视图的事件响应。
最低0.47元/天 解锁文章
616

被折叠的 条评论
为什么被折叠?



