可能重复:
检测 CGPoint 是否在多边形内
我有来自 a 的一组触摸的坐标UIEvent
。有没有办法检查它们是否包含在我可以定义的某个形状(多边形)中?
我有 Java 方面的经验,我会使用polygon
该类并调用该contains(int x, int y)
方法。在 Cocoa Touch 中是否有类似的方法可以做到这一点?
可能重复:
检测 CGPoint 是否在多边形内
我有来自 a 的一组触摸的坐标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
{
}
使用手势识别器,您可以将手势识别器添加到 aUIView
中,并且与 一样UIControl
,添加一个目标-动作对:
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(viewTapped:)];
[self.view addGestureRecognizer:tapRecognizer];
- (void)viewTapped:(UIGestureRecognizer *)recognizer
{
}
这些是基本用户交互的典型方法。与使用 & company 相比,您将拥有更touchesBegan
简单的时间,但如果它们是您所需要的,那么其他回答者会为您提供帮助。