在我的手势识别器处理程序中,我需要知道识别器附加到/响应屏幕上的哪个项目。例如,如果用户点击图像,我的处理程序如何找出被点击的图像?
问问题
2926 次
2 回答
9
在创建手势识别器时,您总是将它与视图联系起来。当检测到手势并调用与创建的手势相关的选择器时,您可以使用gesture.View 找出与手势关联的视图。
这是示例代码
UIImageView *imageView = self.someImageView;
UITapGestureRecognizer *singleTapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageSingleTapped:)];
[imageView addGestureRecognizer:singleTapGesture];
[singleTapGesture release];
- (void) imageSingleTapped:(UIGestureRecognizer*)recognizer
{
UIView *viewTiedWithRecognizer = recognizer.view; // This is the view associated with gesture recognizer.
}
于 2012-05-17T19:43:53.480 回答
1
我也有问题。我不知道我是否有正确的解决方案,但这就是我所做的。
CGPoint point = [gestureRecognizer locationInView:self];
CGPoint offset = self.scrollView.contentOffset;
CGPoint contentPoint = CGPointMake(point.x + offset.x, point.y + offset.y);
for (UIView *view in self.scrollView.subviews)
if (CGRectContainsPoint(view.frame, contentPoint))
return view;
return nil;
也称为蛮力。
现在我看它,我看到了一个错误。如果用户直接触摸滚动条,滚动条可能是返回的视图。我从来没有发生过这种情况(至少据我所知),但我仍然应该对此进行测试并编写解决方案。
于 2012-05-17T18:53:01.790 回答