有没有办法知道'tap'是在UIView的蒙面区域内还是外?我正在使用CoreGraphics掩盖UIView。
到目前为止,我的代码就是这样......
- (void)viewDidLoad {
UIGestureRecogniser *r = [[UIGestureRecogniser alloc] initWithTarget:self action:@selector(gestCall:)];
[self addGestureRecogniser:r];
}
- (void)gestCall:(UIGestureRecogniser *)gestRec {
if ("somthing") {
// outside of mask
} else {
// inside of mask
}
}
谢谢。
答案 0 :(得分:5)
我终于找到了我想要的解决方案。因此,任何试图找到的人都可以在任何CGPath中找到CGPoint。
很简单。
UIBezierPath *p = [UIBezierPath bezierPathWithCGPath:anyCGPath];
BOOL isInPath = [p containsPoint:anyCGPoint];
答案 1 :(得分:2)
基本上你需要检查触摸坐标并确定是否落入遮罩区域。覆盖hitTest:withEvent:
和帐户图像掩码。您可以在覆盖的` - [UIView hitTest:withEvent:]中使用[[[self layer] presentationLayer] hitTest:aPoint]
或[[[self layer] mask] hitTest:aPoint]
。
[编辑]
Check if a user tapped near a CGPath可能有助于找到问题的答案。
[编辑]
请在您的手势处理程序中跟踪以确定是否处理点击。
point.x*point.x+point.y*point.y
(圆公式),此值必须小于或等于半径的平方,即radius*radius
。如果满足此条件,则您的分接点位于圆圈内,否则位于外部。希望说清楚。