通过同级子视图传播触摸事件?

2024-01-12

我有一堆子视图,它们都有用户交互部分(子级)并且全屏。问题是,如果我触及堆栈顶部的非交互式部分,它不会将该触摸传播到堆栈的其余部分。我的设置:

视图A --view B(全屏容器,本身不是交互式的,但具有交互式子视图) ----视图B1(互动) ----查看B2(互动) --视图C(与B相同) ----查看C1(交互) ----查看C2(交互式)

B和C都是全屏,但B1/B2/C1/C2只是屏幕的一小部分。

[a addSubview:b];
[a addSubview:c];

如果我触摸 C1/C2 之外的任何内容,我希望触摸事件检查它是否击中 B (B1/B2) 内部的任何位置,但它只是返回到 A,然后返回到 A 的父级。是否有可能做到这一点?如果我在 C 上设置 userInteractionEnabled NO,但在 C1/C2 上设置 YES,它也不会得到任何对内部调用的调用,尽管在这种情况下,B 会按预期获得触摸。

编辑:最终手动遍历视图堆栈以仅检查某些子视图而不是全部:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {

    if (self != self.topCustomViewsContainer) {     
        for (UIView *v in self.createdSubviews) {
            CGPoint newPoint = point;
            newPoint.x -= v.frame.origin.x;
            newPoint.y -= v.frame.origin.y;
            UIView *hit = [v hitTest:newPoint withEvent:event];
            if (hit)
                return hit;
        }
        return nil;

    }

    return [super hitTest:point withEvent:event];
}

一种可能性是覆盖

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event

视图 B 中的方法。只有当 B 的子视图被命中时,才可以使其返回。试试这样:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
  UIView *hitView = [super hitTest:point withEvent:event];
  if (hitView == self) {
    return nil;
  } else {
    return hitView;
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过同级子视图传播触摸事件? 的相关文章

  • iOS 应用程序中的谷歌地图实时交通状况?

    如何使用 google 地图 sdk 或 api 在 ios 应用程序中添加当前交通状况 如下图所示 有 javascript api 但我没有找到任何适用于 iOS 应用程序的解决方案 只需在 iOS SDK 中添加一行代码即可启用或禁用
  • iOS8中如何在UIAlertController中添加UITableview?

    Till iOS7 in Custom view we can put tableview in alert as per below picture But in iOS8 UITableview is not working I can
  • 在 iOS safari 中禁用选择上下文菜单

    我想禁用在 iOS Safari 网络浏览器 中选择特定文本后出现的默认上下文菜单 那可能吗 这是可能的 请参阅这个例子 http jsfiddle net z9ZNU 基本上 重要的部分是设置正确的 css 属性 body webkit
  • 如何在 iOS 上的视图之间进行展开/收缩转换?

    我正在尝试在 iOS 中制作过渡动画 其中视图或视图控制器似乎扩展以填充整个屏幕 然后在完成后收缩回原来的位置 我不确定这种类型的转换的正式名称是什么 但您可以在 iPad 版 YouTube 应用中查看示例 当您点击网格上的搜索结果缩略图
  • 在 Alamofire 中快速发送 GET 请求中的 json 对象

    我正在尝试执行一个绑定了 json 对象的 GET 请求 这就是我生成 JSON 对象的方式 let jsonObject String AnyObject ean code type match value 16743799 然后我执行了
  • iOS 显示 UIImage 全屏并启用缩放(捏合和双击)

    我有一个UIImage从相机捕获UIImagePickerController 现在 在用户单击它之后 我希望它显示全屏 并且能够使用捏合手势进行放大和缩小 还可以使用双击手势来放大特定区域 换句话说 我想模拟ios默认图像浏览器的功能 我
  • 如何在 SKAction 中途反转精灵所遵循的路径方向?

    我有一个 SKSpriteNode 它使用 SKAction 沿着圆形路径移动 create the path our sprite will travel along let circlePath CGPathCreateWithElli
  • 核心数据:解决一个奇怪的 EXC_BAD_ACCESS 错误

    我在核心数据方面面临着一个非常奇怪的问题 我们来描述一下 定义 假设我有两个模型 ModelA and ModelB 在数据模型中ModelA有参考ModelB作为一对多关联 因此ModelB与 具有一对一关联ModelA Update 当
  • 快速找到一个数字的下一个倍数的方法

    我需要找到从基数开始的数字的第一个倍数 例如 7 中 3 的第一个倍数是 9 我的第一次尝试是这样做 multiple baseNumber while multiple number 0 multiple 最后 multiple 将具有第
  • NSMutableData 删除字节?

    我可以使用以下命令轻松地将字节添加到 NSMutableData 实例appendData方法 但是我没有看到任何类似的删除数据的方法 我是否忽略了某些内容 或者我是否需要创建一个新对象并仅复制我需要的字节 请参阅以下方法的文档 void
  • 使用 jQuery 的 .trigger('dragstart') 实现 HTML5 的拖放功能时如何 .setData/.getData

    当使用 jQuery 的 trigger dragstart 在具有 ondragstart drag event 属性的元素上触发函数时 如何使用 setData getData 实现 HTML5 在触摸设备上的拖放 流程示例 用户通过
  • iOS 复合谓词

    我正在编写一个具有照片数据库的应用程序 每张照片都有多个与之关联的标签 并且该应用程序有一个带有大量切换的搜索页面 允许用户仅根据他们感兴趣的标签搜索照片 每个标签都存储了integerID 是因为它们对应于外部数据库的 ID 所以我尝试简
  • 在 iPhone 和 Cocos2d 中从类类型(+)方法访问对象?

    我有一个类方法 在其中创建并返回类对象 但我想访问同一类中该对象的某些属性 作为一个类方法 我无法在 h 文件中声明该变量 然后在其他方法中访问它 以下是代码 我如何在下面的实例方法中访问 backsprite 或 hudlayer 对象的
  • 如何将 #ifdef DEBUG 添加到 Xcode?

    我的项目中有一些代码永远不应该在发布版本中使用 但在测试时很有用 我想做这样的事情 ifdef DEBUG Run my debugging only code endif 在 Xcode 4 中哪里添加 DEBUG 设置 我尝试将其放入
  • Facebook 登录 Apple CNA

    问题 是否可以设置 Facebook 登录以在 CNA 中使用 是否为开发人员提供 CNA 文档 您可以使用任何开发人员工具调试 CNA 屏幕吗 Details 我创建了一个使用电子邮件提交表单或 Facebook 登录按钮的强制门户登录页
  • 为什么 iOS 5.0 不喜欢纯窗口应用程序?为什么它要求使用视图控制器?

    我有一个使用 Xcode 4 0 的 基于窗口的应用程序 模板创建的 iOS 应用程序 当时运行良好 并且使用的是 iOS 4 3 SDK 这是一个简单地将按钮 标签等直接放置到窗口上的应用程序 没有视图控制器 什么都没有 但现在我已经升级
  • iOS:addConstraints:应用程序崩溃

    Problem 我似乎无法在现有项目中采用自动布局 Details 我之前也遇到过与此问题相同的问题presentViewController 在 iOS 但所提供的答案都不是我的解决方案 我正在使用所有没有 xib 的故事板视图 我的 使
  • iOS 11 getUserMedia 不起作用?

    苹果公司发表声明称getUserMedia将在 iOS 11 上完全正常运行 安装 iOS 11 Beta 版本 5 后 我确实收到一条消息 表明我的网站请求访问我的相机和麦克风 但似乎是这样的 video src window URL c
  • AVAudioMixerNode pan 或 AVAudioUnitSamplerstereoPan 属性无法更改 AVAudioEngine 声音输出的左/右平衡

    我有以下代码 它播放单个 MIDI 音符 但我希望能够调整平衡 平移 以便它仅从左扬声器或右扬声器或某些组合中播放 我认为更改 sampler stereoPan 或 engine mainMixerNode pan 也许可以解决问题 但它
  • extern NSString *const 在类中。

    你好 我有这个头文件 import

随机推荐

  • 将 JSON 数组绑定到 ASP.NET MVC 3 中的列表的模型问题

    我在将 JSON 数组绑定到 MVC 3 中的 C 列表的模型中遇到问题 我有一个叫做 a 的对象DockState 它看起来像这样 Serializable public class DockState public bool Close
  • 在 Android 上检测显着的设备运动

    我一直在试图弄清楚如何制作一个应用程序来检测设备是否已被大量移动 而不仅仅是晃动 我试图检测至少一英尺的距离 阅读官方 Android 开发网站上的培训部分 我最好的猜测是我应该使用重大运动传感器 http developer androi
  • 显示 R 中汇总函数的所有条目?

    所以我有一个非常非常大的数组 当我对其运行摘要 var 时 如何才能看到所列出的内容之外的内容 即扩展 其他 位 这是一个示例输出 var foo1 5908364 foot 1419481 foop 1214379 billy 83301
  • C 语言中 x32 和 x64 的 LVM_GETITEMTEXT

    我一直在尝试在另一个进程中获取列表视图中的项目文本 我发现了一个很棒的教程代码项目 http www codeproject com KB threads int64 memsteal aspx 感谢这篇文章 我能够在 x32 上做到这一点
  • 固定元素如何仅使用 CSS 将内容推送到页面?

    我以前见过类似的问题 但答案通常包括 Jquery 等 我是菜鸟 我只想使用 CSS 我有一个网页 上面显示一段文字 p yes yes yes p p yes yes yes p p class move Moving part p 当屏
  • 获取 Flask 请求的引用 URL

    当用户访问我们的网站并注册时 我如何捕获他们来自哪个网站 无论是搜索 公关网站等 我不在乎他们访问了我们网站的哪个页面 我只想知道哪些营销活动为我们带来了最多的注册量 我知道 Google Analytics 可能可以做到这一点 但我也希望
  • 如何让手风琴区域扩展到(垂直)动态内容?

    我有一个主数据网格 然后在它下面有一个手风琴控件 在其中一个手风琴项目中 我有另一个数据网格 它绑定到第一个数据网格的选定项目 简单的xaml是
  • 通过 Django 使用 RESTful API

    我正在构建一个 Django 应用程序 需要与第三方 RESTful API 交互 对该资源进行各种 GET PUT 等 我正在寻找一种在 Django 中表示该 API 的好方法 最明显但可能不太优雅的解决方案似乎是创建一个模型 该模型具
  • 当 Iterator::map 返回 Result::Err 时,如何停止迭代并返回错误?

    我有一个函数返回一个Result fn find id Id gt Result
  • 使用 Selenium WebDriver 的 Spring Boot Web 应用程序

    我正在尝试了解 Spring Boot 但在尝试将 Selenium 集成到我的 Spring Boot 应用程序中时遇到了一些问题 我正在尝试实现一个简单的网页 其中有一个输入框和按钮 输入框将包含一个 URL 然后该按钮将启动一个 se
  • 将键值列分组为一行

    我正在尝试从在双列中存储键值对的 SQLite 表中提取数据 例如 用键foo bar man and row 该表将如下所示 id external id key value 1 12345 foo cow 2 12345 bar moo
  • 请对家庭版本控制系统提出建议

    我有一个真正需要纳入源代码管理的家庭项目 我尝试安装 Subversion 我对此有一些经验 但无法运行 我不是特别想使用 SourceSafe 我对 Git Mercury 有点紧张 因为它有点神秘 尽管这只是基于意见而不是我的经验 主要
  • 编译时浮动打包/双关

    我正在为 PIC32MX 编写 C 语言 使用 Microchip 的 PIC32 C 编译器 基于 GCC 3 4 进行编译 Added我遵循的标准是 GNU99 带有 GNU 扩展的 C99 编译器标志 std gnu99 我的问题是
  • Rails 助手无法在测试环境中工作

    我已按照以下网址提供的教程进行操作http railscasts com episodes 221 subdomains in rails 3 http railscasts com episodes 221 subdomains in r
  • 配置文件 WPF 控件实例化性能

    有没有一种好方法来测试实例化控件的性能 特别是在以下方面DataBinding and Templates表现 我想知道需要多少时间应用模板 and 初始化数据绑定 takes 我正在使用 WPF Performance Suite 和 A
  • 将 UIView 绕其中心旋转几次

    我正在尝试旋转一些UIView围绕它的中心 所以简单的代码是这样的 伪代码 UIView beginAnimations crazyRotate context nil UIView setAnimationDuration 1 0 som
  • 如何在 Python 中让用户选择要更新的键,然后选择新值来更新字典值?

    我正在尝试编写一个程序 我和我的兄弟可以输入和编辑足球比赛名单中的信息 以比较球队和管理球员等 这是我尝试过的第一个 大 项目 我在字典中有一个嵌套字典 我可以让用户创建字典等 但是当我尝试让 用户 通过 raw input 返回编辑它们时
  • Kubernetes:minikube 持久卷本地文件系统存储位置

    我已经阅读了所有文档和一些 SO 帖子 但找不到这个问题的答案 minikube 将其持久卷保存在我的本地 Mac 文件系统中的什么位置 Thanks 首先请记住 Kubernetes 运行在Minikube https minikube
  • NodeJS Express req.session 未定义

    就是想不通这个 我发现的关于快速会话的所有内容都表明它确实有效 但对我来说并非如此 我的整个应用程序配置 app configure gt app set port process env PORT 3000 app set views p
  • 通过同级子视图传播触摸事件?

    我有一堆子视图 它们都有用户交互部分 子级 并且全屏 问题是 如果我触及堆栈顶部的非交互式部分 它不会将该触摸传播到堆栈的其余部分 我的设置 视图A view B 全屏容器 本身不是交互式的 但具有交互式子视图 视图B1 互动 查看B2 互