检查形状中是否包含一组坐标

时间:2013-01-02 04:17:59

标签: objective-c cocoa-touch geometry

  

可能重复:
  Detect if CGPoint within polygon

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

我有Java经验,我会使用polygon类并调用contains(int x, int y)方法。在Cocoa Touch中有类似的方法吗?

3 个答案:

答案 0 :(得分:3)

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

编辑:

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

答案 1 :(得分:2)

答案 2 :(得分:0)

也许你正在做一些与众不同的事情,比如你只想要在三角形或其他东西中检测到触摸。如果是这样,你可以忽略这一点。但是,由于您是iOS新手,我建议您使用UIControl子类与目标 - 操作对或UIGestureRecognizer

示例代码为:

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

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

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

使用手势识别器,您可以将手势识别器添加到UIView,与UIControl一样,添加目标操作对:

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

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

这些是基本用户交互的典型方法。与使用touchesBegan&成员相比,您将有更多 更简单的时间。公司,虽然如果他们是你所需要的,那么其他的回答者就可以了。