iOS UIButton按钮的是如何工作的?

主要流程图

事件传递:通过选择UIApplication 传递到对应window上然后,然后找到当前显示控制器,倒序遍历subViews,使用【hitest:withEven:】得到frame是哪个view的事件。最佳的View必须符合Alph大于0.01或者不是隐藏或者用户交互关闭

事件响应:从最佳响应这传递到UIapplication。前提是

- (void)touchesBegan:(NSSet *)toucheswithEvent:(nullableUIEvent*)event;

- (void)touchesMoved:(NSSet *)toucheswithEvent:(nullableUIEvent*)event;

- (void)touchesEnded:(NSSet *)toucheswithEvent:(nullableUIEvent*)event;

- (void)touchesCancelled:(NSSet *)toucheswithEvent:(nullableUIEvent*)event;

没有被重写或者没有被添加手势。

假如添加了手势也将不会被传递给下一个响应者。继承于UIControl 的控件以上4个方法都被内部重写了的。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文来自:http://ios.jobbole.com/84081/ 前言: 按照时间顺序,事件的生命周期是这样的...
    HackerOnce阅读 7,830评论 1 10
  • 前言: 按照时间顺序,事件的生命周期是这样的: 事件的产生和传递(事件如何从父控件传递到子控件并寻找到最合适的vi...
    reviewThis阅读 4,055评论 1 2
  • 前言 按照时间顺序,事件的生命周期是这样的: 事件的产生和传递(事件如何从父控件传递到子控件并寻找到最合适的vie...
    欢博阅读 3,682评论 0 3
  • 响应者对象 在iOS中不是任何对象都能处理事件,只有继承了UIResponder的对象才能接收并处理事件。我们称之...
    JonesCxy阅读 4,017评论 0 0
  • 在iOS开发中经常会涉及到触摸事件。本想自己总结一下,但是遇到了这篇文章,感觉总结的已经很到位,特此转载。作者:L...
    WQ_UESTC阅读 11,302评论 4 26