我一直在为iOS开发一个简单的游戏,包括拖动和使用旋转和其他手势识别器.touchesBegan/Moved/Ended通过识别器实现拖动和旋转.
视图形状不规则,视图边框有时会重叠,所以我在我的图片视图中实现了Ole Belgeman的UIImage + ColorAtPixel,并在主元素视图中实现了overrode 方法.isPointInside调用图片视图中的方法,该方法在触摸点检查alpha,如果触摸了透明部分则返回NO.基本上,忽略这个分支.isPointInsidehitTest
但它的副作用是hitTest忽略透明部分的所有触摸,旋转识别器仅适用于非透明区域.对于一些尺寸太小的视图,无法使用旋转手势:(
有没有办法以某种方式避免此问题,使用hitTest逻辑只为touchesBegan?我试图解决这个问题,但似乎hitTest在任何触摸处理之前都是严格的.
检查工作中的透明度touchesBegan,但是当您触摸与另一个视图的非透明部分重叠的透明部分时,后者不会接收到触摸.
我只是无法弄清楚这个伎俩......
预先感谢您的任何帮助!
我将使拖动使用UIPanGestureRecognizer,以便您可以实现委托方法-gestureRecognizer:shouldReceiveTouch:NO当您的平移识别器考虑透明区域中的触摸时返回。YES将其保留为未实现或从旋转识别器返回以接收所有内容。
此外,对这两种操作使用手势识别器还有其他好处,例如能够使用-requireGestureRecognizerToFail:指定依赖项。
| 归档时间: |
|
| 查看次数: |
2012 次 |
| 最近记录: |