UIGestureRecognizer 用于 UIView 的一部分

2023-12-27

我在 iOS 应用程序中使用 UIGestureRecognizer,但遇到了一些问题。

我只希望手势在视图的某个区域起作用,因此我使用特定框架创建了一个新的 UIView 并将其添加到根视图中。手势工作正常,但现在唯一的问题是我无法单击新视图下方/后面的内容(根视图上的对象)。如果我将 userInteractionEnabled 设置为 NO,它会破坏手势,因此这不是一个选项。

我能做什么来解决这个问题?

Thanks.


不要为手势识别器创建新视图。识别器实现 locationInView: 方法。为包含敏感区域的视图进行设置。在handleGesture上,对您关心的区域进行命中测试,如下所示:

0) 在包含您关心的区域的视图上执行所有这些操作。不要仅为手势识别器添加特殊视图。

1) 设置 mySensitiveRect

@property (assign, nonatomic) CGRect mySensitiveRect;
@synthesize mySensitiveRect=_mySensitiveRect;
self.mySensitiveRect = CGRectMake(0.0, 240.0, 320.0, 240.0);

2)创建你的手势识别器:

gr = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleGesture:)];
[self.view addGestureRecognizer:gr];
// if not using ARC, you should [gr release];
// mySensitiveRect coords are in the coordinate system of self.view


- (void)handleGesture:(UIGestureRecognizer *)gestureRecognizer {
    CGPoint p = [gestureRecognizer locationInView:self.view];
    if (CGRectContainsPoint(mySensitiveRect, p)) {
        NSLog(@"got a tap in the region i care about");
    } else {
        NSLog(@"got a tap, but not where i need it");
    }
}

敏感矩形应在 myView 的坐标系中初始化,该坐标系与您附加识别器的视图相同。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UIGestureRecognizer 用于 UIView 的一部分 的相关文章

随机推荐

  • 如何组合数据然后分离连接的数据?

    我想将一系列数据合并到一个单单元格 G5 中 然后我想将Value G5拆分为原始形式 太感谢了 https docs google com spreadsheets d 1sVrpPvtQPG0Zw2Ar UxPHXNN0atEdQNX
  • PHP 中有从数组中提取“列”的函数吗?

    我有一个数组的数组 具有以下结构 array array page gt page1 name gt pagename1 array page gt page2 name gt pagename2 array page gt page3 n
  • Cobertura 如何与 JUnit 配合使用?

    我不明白Cobertura如何与JUnit合作 据我了解 cobertura 修改编译的字节代码并在该字节代码中插入它自己的命令 好的 之后 我们运行 Junit 框架并对其进行测试 谁能解释一下 cobertura 在什么时候获取执行了哪
  • 是否有一个 Python 习惯用法可以通过短路来评估函数/表达式列表?

    我写了一个简单的脚本来解决 逻辑谜题 这是学校里的谜题类型 你会被赋予许多规则 然后必须能够找到诸如 有五个音乐家 名字分别为 A B C 之类的问题的解决方案 D E 在一场音乐会上演奏 每人一个接一个地演奏 如果 A 在 B 之前演奏
  • 如何从键而不是值推断类型参数?

    我有一个表示有向图结构的类 它是具有一个类型参数的通用类K extends string对于节点名称 图表是通过传递一个对象来构造的 例如 a b b 在这个最小的例子中代表两个节点a and b 有一条边a b class Digraph
  • 为什么 ScriptEngine 不再有 Execute 方法?

    目前我已经开始更认真地与罗斯林合作 我发现本文 http visualstudiomagazine com articles 2011 11 16 the roslyn scripting api aspx关于使用ScriptEngine在
  • 通过四维数据寻路

    问题是找到飞机穿过四维风 不同高度的风 并且随着飞行而变化的风 预测风模型 的最佳路线 我使用了传统的 A 搜索算法 并对其进行了修改 使其能够在 3 维和风向量中工作 它在很多情况下都有效 但速度非常慢 我正在处理大量数据节点 并且不适用
  • PATH_MAX和NAME_MAX之间是什么关系,如何获取?

    In limits h 并且在 POSIX 联机帮助页的各个地方都引用了PATH MAX and NAME MAX 这些相互之间有何关系 他们的官方文档在哪里 如何在 C Python 和 GNU shell 环境的运行时和 相关 编译时获
  • 如何将身份验证、角色和安全性融入 DDD 中?

    如何在 C 域驱动设计项目中实现角色和安全性 关于它是否应该由调用应用程序 ASP NET MVC 实现还是在域模型本身 模型实体和服务 中实现 我们存在一些激烈的争论 有些人认为它应该在网站本身中 因为那里已经存在身份验证 但这意味着每次
  • 将屏幕截图上传到 iTunes Connect 时出现奇怪的错误

    我正在尝试将新的屏幕截图上传到 iTunes Connect 上的游戏页面 但当我这样做时 我收到了一个与现实和 或常识无关的错误 基本上 我上传了一堆具有正确分辨率 尺寸等的 iPhone 屏幕截图 然后收到一条错误消息 说我没有这样做
  • 如何在 igraph R 中的图组件之间添加边

    我有一个图表包含4 components 现在 我想在其中添加一个优势all components基于size of the membership 例如 下图包含4 components 首先 我将连接all components with
  • AngularJS - 原始/肮脏和触摸/未触摸之间的区别

    AngularJS 开发人员指南 表单 https docs angularjs org guide forms列出了许多有关表单和字段的样式和指令 对于每一个 都有一个 CSS 类 ng valid ng invalid ng prist
  • 创建 DPI 感知应用程序

    我有一个 C 表单应用程序 当我更改显示器的 DPI 时 所有控件都会移动 我用了代码this AutoScaleMode AutoScaleMode Dpi 但这并没有回避问题 有人有想法吗 编辑 从 NET 4 7 开始 Windows
  • 为什么需要设置 DefaultForbidScheme

    在 WebAPI net 核心项目中 我创建了一个验证 api 密钥的中间件类 通过验证它 它会检索该密钥在调用方法中拥有的权限 用户或管理员 我通过一个开关来设置原理 就像这样 GenericIdentity identity new G
  • 在 Haskell 中循环时

    如何在 Haskell 中编写以下伪代码 x 0 for i from 0 to 100 j 0 while f i j gt 0 x f i j j 1 f一些不重要的功能 我想出了这样的事情 a x i lt 0 100 let s t
  • 如何调整直接从 R 脚本渲染的 pdf 中的图形大小?

    我从一些地方读到 直接从 R 脚本渲染的 pdf 的图形大小可以设置为knitr opts chunk 我想从包含多个图形的 R 脚本制作一个 pdf 文件 并尝试使用以下命令调整图形大小opts chunk 然而 这并没有奏效 下面是一个
  • 委托在 Objective-C 中如何工作?

    有谁知道我在哪里可以找到有关应用程序委托的内容和工作方式的良好解释 教程objective C 我手头的两本书没有详述delegates足够了 并且没有很好地解释它们 让我真正理解它们的力量和功能 如有疑问 请检查docs https de
  • 并发和协调运行时 (CCR) 学习资源

    我最近正在学习它的内部和外部并发和协调运行时 CCR http msdn microsoft com en us library bb905450 aspx为这项相对较新的技术寻找良好的学习资源非常困难 谷歌快速搜索后 Creedence
  • 如何在cmake中打印所有编译选项

    我的项目使用 cmake 一些编译选项是通过配置的set set CMAKE CXX FLAGS DEBUG g set CMAKE CXX FLAGS DEBUG CMAKE CXX FLAGS DEBUG O0 set CMAKE CX
  • UIGestureRecognizer 用于 UIView 的一部分

    我在 iOS 应用程序中使用 UIGestureRecognizer 但遇到了一些问题 我只希望手势在视图的某个区域起作用 因此我使用特定框架创建了一个新的 UIView 并将其添加到根视图中 手势工作正常 但现在唯一的问题是我无法单击新视