我有来自UIEvent
的一组触摸的坐标。有没有办法检查它们是否包含在某个形状 - 多边形 - 我可以定义?
我有Java经验,我会使用polygon
类并调用contains(int x, int y)
方法。在Cocoa Touch中有类似的方法吗?
答案 0 :(得分:3)
如果您将多边形定义为CGPath
,则可以使用CGPathContainsPoint()
...您能告诉我们有关您的应用程序概念的更多信息吗?
编辑:
还有更高级UIBezierPath
和/或NSBezierPath
..这两个对象都有-containsPoint
方法。
答案 1 :(得分:2)
尝试使用CGRectContainsPoint(CGRect rect, CGPoint point)
OR
答案 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
&成员相比,您将有更多 更简单的时间。公司,虽然如果他们是你所需要的,那么其他的回答者就可以了。