【发布时间】:2011-05-04 07:37:39
【问题描述】:
我一直在为 iOS 开发一个简单的游戏,其中涉及拖动和使用旋转以及其他手势识别器。拖拽是通过touchesBegan/Moved/Ended实现的,旋转是通过识别器实现的。
视图形状不规则,视图边界有时会重叠,因此我在我的图片视图中实现了 Ole Belgeman 的UIImage+ColorAtPixel,并在主元素视图中覆盖了isPointInside 方法。 isPointInside 调用 图片视图 中的方法,该方法检查触摸点的 alpha,如果已触摸透明部分,则返回 NO。本质上,hitTest 忽略了这个分支。
但它的副作用是 hitTest 会忽略透明部分的所有触摸,而旋转识别器仅适用于非透明区域。对于某些尺寸太小的视图,无法使用旋转手势:(
有没有什么办法可以避免这个问题,并为touchesBegan 使用hitTest 逻辑only?我试图找出解决方案,但似乎 hitTest 在任何触摸处理之前都严格工作。
在touchesBegan 检查透明度有效,但是当您触摸与另一个视图的非透明部分重叠的透明部分时,后者不会收到触摸。
我就是想不通……
提前感谢您的帮助!
【问题讨论】:
标签: objective-c ios