美文网首页
理解iOS的事件传递

理解iOS的事件传递

作者: hui8685291 | 来源:发表于2020-04-02 10:33 被阅读0次

理解事件传递

  1. 点是否落在目标视图上
  2. 如果需要扩大目标视图的点击范围(热区),则需要触碰的点是在在目标视图的父视图范围上,否则无效;
  3. 如果目标视图被其他视图遮盖住了,此时还想目标视图触发事件,此时利用事件传递的方式,hitTest:event:方法,找到合适的view,让其处理事件.

CGRectContainsPoint(Rect, Point); //判断Rect中是否包含Point
CGRectContainsRect(Rect1,Rect2); //判断Rect1中是否包含Rect2

CGPoint redCenterInView = [self.grayView convertPoint:self.redView.center toView:self.view];

CGPoint redCenterInView = [self.view convertPoint:self.redView.center fromView:self.grayView];

1.使用convertPoint:toView:时,调用者应为covertPoint的父视图。即调用者应为point的父控件。toView即为需要转换到的视图坐标系,以此视图的左上角为(0,0)点。
2.使用convertPoint:fromView:时正好相反,调用者为需要转换到的视图坐标系。fromView为point所在的父控件。
3.toView可以为nil。此时相当于toView传入self.view.window

-(CGPoint)convertPoint:(CGPoint)point toView:(nullable UIView *)view;//点转换
-(CGPoint)convertPoint:(CGPoint)point fromView:(nullable UIView *)view;//点转换
-(CGRect)convertRect:(CGRect)rect toView:(nullable UIView *)view;//矩形转换
-(CGRect)convertRect:(CGRect)rect fromView:(nullable UIView *)view;//矩形转换

利用以下pointInside方法进行判断点是否落在在其内部;

- (BOOL)pointInside:(CGPoint)point withEvent:(nullable UIEvent *)event; // default returns YES if point is in bounds

相关文章

  • 理解iOS的事件传递

    理解事件传递 点是否落在目标视图上 如果需要扩大目标视图的点击范围(热区),则需要触碰的点是在在目标视图的父视图范...

  • iOS 响应链

    iOS开发 - 事件传递响应链iOS 响应者链,事件的传递事件传递之响应链Cocoa Touch事件处理流程--响...

  • 深入浅出iOS事件机制

    深入浅出iOS事件机制事件传递:响应链事件传递响应链

  • 初识iOS事情处理机制

    参考:史上最详细的iOS之事件的传递和响应机制-原理篇iOS触摸事件全家桶史上最详细的iOS之事件的传递和响应机制...

  • iOS事件,原来如此

    精简地说:iOS事件分为传递和响应两个部分。 事件传递(建立传递链): iOS系统检测到手指触摸(Touch)操作...

  • 事件层级原理 响应链

    iOS事件 运动事件,远程控制事件、触摸事件 触摸事件 事件传递的顺序 当点击红色的时候 打印为 事件传递的方法 ...

  • iOS 触摸事件与响应理解

    参考文章: iOS触摸事件的流动 iOS触摸事件的传递与响应 UIViewController UIAppli...

  • iOS响应者链

    参考好文 iOS开发-事件传递响应链,用运行时分析 iOS事件传递:响应者链[译] http://www.jian...

  • iOS事件的传递链和响应链

    彻底理解事件的传递链和响应链需要先弄明白iOS对象为什么可以响应用户交互,理解UIResponder类; 1.1响...

  • iOS之事件的传递和响应机制

    iOS之事件的传递和响应机制

网友评论

      本文标题:理解iOS的事件传递

      本文链接:https://www.haomeiwen.com/subject/odfzyhtx.html