可能重复:
检测CGPoint是否在多边形内
我有一组UIEvent
中的触摸坐标。 是否有一种方法可以检查它们是否包含在我定义的某个形状 - 多边形 - 内?
我有Java经验,我会使用polygon
类并调用contains(int x, int y)
方法。 在Cocoa Touch中是否有类似的方法呢?
可能重复:
检测CGPoint是否在多边形内
我有一组UIEvent
中的触摸坐标。 是否有一种方法可以检查它们是否包含在我定义的某个形状 - 多边形 - 内?
我有Java经验,我会使用polygon
类并调用contains(int x, int y)
方法。 在Cocoa Touch中是否有类似的方法呢?
CGPath
,则可以使用CGPathContainsPoint()
... 您能告诉我们更多关于您应用程序的概念吗?UIBezierPath
和/或NSBezierPath
.. 这两个对象都有一个-containsPoint
方法。CGRectContainsPoint(CGRect rect, CGPoint point)
来解决问题。也许你正在做一些不寻常的事情,比如你只想在三角形内检测触摸事件。如果是这样,你可以忽略这个建议。但由于你是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
等更容易,虽然如果您需要它们,其他回答者已经为您提供了支持。