iphone - 如何确定 UITapGestureRecognizer 触摸了哪个 View ?

标签 iphone ios uigesturerecognizer uitapgesturerecognizer

我有一个 UIScrollView带有 subview 和 UITapGestureRecognizer .

我这样创建识别器:

UITapGestureRecognizer *tgr = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGestureRecognized:)];
[self addGestureRecognizer:tgr];
UITapGestureRecognizer 的 View 属性指向 ScrollView 本身,即使用户触摸了不同的 View 。我需要知道触摸是否直接在 ScrollView 上下降。

最佳答案

Paul 的建议很好,但如果您不想(或不能)子类化或成为识别器的代表,还有另一种方法。

您可以向手势识别器索取 locationInView:然后使用您的 ScrollView 的 hitTest:withEvent: 检索该点位于顶部的 View 方法(在 UIView 上定义)。就像是:

CGPoint location = [recognizer locationInView:scrollView];
UIView *touchedView = [scrollView hitTest:location withEvent:nil];

关于iphone - 如何确定 UITapGestureRecognizer 触摸了哪个 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18455053/

相关文章:

ios - 添加导致错误的 UIBarButtonItem 数组

objective-c - Objective-C : Draw(Write) on Touch in a UIScrollView

cocos2d-iphone - 在 cocos2d 中点击持续时间

html - iOS tel:和mailto:链接仅适用于target =“_ blank”

ios - View Controller "embed"本身如何在 UINavigationController 中 - 特别是当包含在容器 View Controller 中时

ios - 使用 Apple Dev 代码时出错?

ios - 为什么deviceToken是以NSData类型传递的,在application :didRegisterForRemoteNotificationsWithDeviceToken?

swift - UIGestureRecognizer 没有响应 swift 3.0

ios - 用户取消 ios9 后重新启用 GameCenter

安卓和苹果手机。统一代码库可能吗?