5

可能重复:
检测 CGPoint 是否在多边形内

我有来自 a 的一组触摸的坐标UIEvent。有没有办法检查它们是否包含在我可以定义的某个形状(多边形)中?

我有 Java 方面的经验,我会使用polygon该类并调用该contains(int x, int y)方法。在 Cocoa Touch 中是否有类似的方法可以做到这一点?

4

3 回答 3

3

如果您将多边形定义为CGPath,您可以使用CGPathContainsPoint()... 您能告诉我们更多关于您的应用概念的信息吗?

编辑:

还有更高级别的UIBezierPath和/或NSBezierPath.. 这两个对象都有一个-containsPoint方法。

于 2013-01-02T04:21:56.823 回答
2

尝试使用CGRectContainsPoint(CGRect rect, CGPoint point)

见这里:https ://developer.apple.com/library/mac/#documentation/graphicsimaging/reference/CGGeometry/Reference/reference.html

或者

检测 CGPoint 是否在多边形内

于 2013-01-02T04:27:08.153 回答
0

也许您正在做一些不寻常的事情,例如您只想在三角形或其他东西内检测到触摸。如果是这样,您可以忽略这一点。但由于您是 iOS 新手,我建议您使用UIControl带有目标-动作对的子类或UIGestureRecognizer.

示例代码是:

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];

稍后在target- 可能是您的视图控制器中,您将实现该方法:

- (void)buttonPressed:(id)sender
{
}

使用手势识别器,您可以将手势识别器添加到 aUIView中,并且与 一样UIControl,添加一个目标-动作对:

UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(viewTapped:)];
[self.view addGestureRecognizer:tapRecognizer];

- (void)viewTapped:(UIGestureRecognizer *)recognizer
{
}

这些是基本用户交互的典型方法。与使用 & company 相比,您将拥有touchesBegan简单的时间,但如果它们是您所需要的,那么其他回答者会为您提供帮助。

于 2013-01-02T04:37:39.183 回答