通过 subView 禁用触摸视图
Posted
技术标签:
【中文标题】通过 subView 禁用触摸视图【英文标题】:Disable touching view through subView 【发布时间】:2016-04-13 19:00:25 【问题描述】:我正在尝试使用 SpriteKit + Swift 制作我的第一款游戏。
我现在要解决的问题是,如果我在我的主 SKView 中添加一个没有任何按钮的 SUBVIEW,只有背景颜色和大小并触摸它,我的主视图会处理这种触摸,就像没有子视图一样全部。
因此,对于父视图的 UITapGestureRecognizer,不存在类似 UIView 类型的子视图。我发现解决它的唯一方法是在没有文本和处理程序的子视图上放置一个子视图大小的按钮。但是这种方式看起来很毛骨悚然……
【问题讨论】:
你是说你的触摸会同时进入 skview 和它的子视图? 【参考方案1】:可能是您的子视图(或其父视图之一)将userInteractionEnabled
设置为false
。 UIView 默认将userInteractionEnabled
设置为true
,但例如UIImageView(它是UIView 的子类)默认将userInteractionEnabled
设置为false
。
设置为 NO 时,用户事件(例如触摸和键盘)用于 视图被忽略并从事件队列中删除。当设置为 是的,事件正常传递到视图。默认值为 这个属性是YES。
(...)
注意
一些 UIKit 子类会覆盖这个属性并返回一个不同的 默认值。请参阅该类的文档以确定它是否 返回不同的值。
请参阅Apple docs 了解更多信息。
它本身可能不是您的子视图,而是它的父视图之一,因为此设置会向下传播。
如果设置为 NO,则此视图(及其子视图)将被排除在外 接受触摸。触及此视图或其子视图之一“下降 通过”到它背后的视图。
来源:Matt Neuburg 编写的 ios 编程
更多信息,请查看On iOS, if a superview's userInteractionEnabled is NO, then all subviews are disabled as well?
【讨论】:
以上是关于通过 subView 禁用触摸视图的主要内容,如果未能解决你的问题,请参考以下文章