1
286
为容器创建自定义视图并重写pointinside:message以在该点不在符合条件的子视图中时返回false,如下所示: Swift:
目的:
将此视图用作容器将允许其任何子级接收触摸,但视图本身对事件是透明的。 |
2
87
我也用
无需子类。工作良好。 |
3
18
相反,您可以覆盖:
在您的uiview子类中,如果您希望将该触摸发送到响应器链上,则返回no(即发送到视图后面没有任何内容的视图)。 |
4
7
|
5
6
基于John发布的内容,这里有一个示例,允许触摸事件通过视图的所有子视图,按钮除外:
|
6
6
最近我写了一个班,可以帮我解决这个问题。将其用作在透明像素上执行的触摸事件的自定义类。
此解决方案比公认的答案要好一些,因为您仍然可以单击半透明的
|
7
3
斯威夫特3
|
8
3
顶级投票解决方案对我来说并不是完全有效,我想这是因为我在层次结构中有一个TabbarController(正如其中一条评论指出的那样),它实际上是将触摸传递给UI的某些部分,但它干扰了TableView拦截触摸事件的能力,最终它覆盖了什么? 希泰 在视图中,我希望忽略触摸,并让该视图的子视图处理它们。
|
9
2
根据《iPhone应用程序编程指南》:
更新的 :删除了示例-重新阅读问题… 在按钮到达之前,您是否对可能正在处理点击的视图进行了任何手势处理?当您没有透明的视图时,按钮是否工作? 是否有非工作代码的代码示例? |
10
2
我创建了一个类别来执行此操作。 一个小小的方法在旋转,景色是金色的。 报头
实施文件
你需要加上我的swizz.h和swizz.m 位于 Here 之后,只需在project prefix.pch文件中导入uiview+passthroughparent.h,每个视图都将具有此功能。 每一个观点都会有点,但没有一个空白。 我还建议使用清晰的背景。
编辑 我创造了自己的财产袋,这是不包括以前。 头文件
实施文件
|
11
1
据我所知,你应该能够通过超越 hitTest: 方法。我试过了,但没能让它正常工作。 最后,我在可触摸对象周围创建了一系列透明视图,这样它们就不会覆盖对象。这对我的问题有点小作用。 |
12
1
从其他答案中获取提示并阅读苹果的文档,我创建了这个简单的库来解决您的问题:
我认为在生产代码中使用方法Swizing是非常危险的,因为您直接干扰了苹果的基本实现,并在应用程序范围内进行更改,这可能导致意想不到的结果。 有一个演示项目,希望自述文件能够很好地解释应该做什么。要处理OP,您需要将包含按钮的Clear uiView更改为Interface Builder中的Class NatouchthroughView。然后找到覆盖您想要点击的菜单的清除uiview。在接口生成器中将该uiview更改为类naroottouchthroughview。如果您希望这些触摸传递到底层视图控制器,它甚至可以是视图控制器的根uiview。查看演示项目以了解其工作原理。它非常简单、安全、无创 |
13
0
如果您不必费心使用类别或子类uiview,您也可以将按钮向前移动,使其位于透明视图的前面。这不可能总是取决于你的申请,但它为我工作。你总是可以把按钮拿回来或者把它藏起来。 |
14
0
试试这个
|
15
0
尝试设置
|
Martin sku · 在目标C中打印时间 2 年前 |
Vinod prajapat · 如何更新数组的最后一个元素? 2 年前 |
subin272 · 修复iOS中的多个按钮单击事件? 6 年前 |
James Chan · 如何使用锁定/解锁? 6 年前 |
Josh F. · NSBundle mainBundle返回零 6 年前 |