【问题标题】:Custom UIView touch area自定义 UIView 触控区域
【发布时间】:2012-06-30 19:51:13
【问题描述】:

您好,我有一些奇怪的形状需要处理 touchesBegan 方法。问题是UIViews 是正方形的,我能做到的唯一方法就是声明一个网格,然后检查坐标。有没有其他方法可以做到这一点?

【问题讨论】:

  • touches* 方法为您提供一组 UITouch 对象,这些触摸的坐标可以使用方法 (locationInView: IIRC) 找到。
  • 是的,但如果我有奇怪的 uiview 形状,就会有透明区域。考虑检测触摸区域是否透明。
  • 这基本上意味着我需要为每个 .有点繁琐,工作量太大。

标签: iphone ios uiview touchesbegan


【解决方案1】:

在您的 UIView 子类中实现 hitTest:withEvent:。仅当 CGPoint 在形状内时才返回 YES。

查看多边形形状的这个问题: How can I determine whether a 2D Point is within a Polygon?

【讨论】:

    【解决方案2】:

    另外,如果你有机会在 WWDC 2012 上看到这个关于如何处理复杂触摸事件的演讲非常棒:

    https://developer.apple.com/videos/wwdc/2012/?id=200

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多