我有一个图像,我想设置为响应几个不同的手势响应者。因此,例如,如果图片的一部分被触摸,我想要调用一个选择器,而另一个选择器用于图片的不同部分。
我查看了UIGestureRecognizer
和UITapGestureRecognizer
类,但我找不到指定要与之关联的图像区域的方法。这在iOS中是否可行?如果是的话,我应该考虑使用什么类?
答案 0 :(得分:3)
最简单的解决方案是在图像上放置不可见的视图,并在其上放置手势识别器。
如果这不可行,你将不得不在手势识别器的点击处理程序中查看locationInView,并根据用户点击的位置找出你想要做的事情。
答案 1 :(得分:2)
使用locationInView:
属性确定点击发生的位置,然后有条件地调用方法。您可以通过设置与您的匹配区域对应的一些CGRect
来执行此操作。然后使用CGRectContainsPoint()
函数确定点击是否落在其中一个命中区域。
您的点击手势识别器操作可能如下所示:
- (void)tapGestureRecognized:(UIGestureRecognizer *)recognizer
{
// Specify some CGRects that will be hit areas
CGRect firstHitArea = CGRectMake(10.0f, 10.0f, 44.0f, 44.0f);
CGRect secondHitArea = CGRectMake(64.0f, 10.0f, 44.0f, 44.0f)
// Get the location of the touch in the view's coordinate space
CGPoint touchLocation = [recognizer locationInView:recognizer.view];
if (CGRectContainsPoint(firstHitArea, touchLocation))
{
[self firstMethod];
}
else if (CGRectContainsPoint(secondHitArea, touchLocation))
{
[self secondMethod];
}
}