一次禁用根视图交互并启用子视图交互

Posted

技术标签:

【中文标题】一次禁用根视图交互并启用子视图交互【英文标题】:Disable Root view interaction and Enable subview interaction at a time 【发布时间】:2012-05-29 06:17:48 【问题描述】:

我正在开发一个应用程序。我使用了一个视图并向其中添加了一个子视图。我的问题是当单击根视图中的一个按钮时,我添加了一个子视图(tableview)。当我在表视图中选择任何行时。然后从超级视图中删除视图。当我将子视图添加到根视图时。我想禁用根视图交互而不影响子视图交互。有可能吗?

【问题讨论】:

【参考方案1】:

在根视图的顶部放置一个透明或半透明的覆盖视图(Alpha = 0 到 0.5 取决于您),它的 frame = rootView.frame 位于根视图之上,然后将您的表格视图放入此覆盖视图中,不能有触摸事件路过,呵呵。

【讨论】:

【参考方案2】:

userInteractionEnabled 的值会影响它所设置的视图的所有子视图,所以不,不是你想的那样。如果您希望禁用视图的触摸事件,请将其子类化并覆盖 - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event 以将其触摸转发到另一个视图。

【讨论】:

以上是关于一次禁用根视图交互并启用子视图交互的主要内容,如果未能解决你的问题,请参考以下文章

iOS - 过滤和转发触摸到子视图

在 UIView.animateWithDuration() 期间启用手势识别器的用户交互

是否可以阻止触摸被添加到队列中?

如何在禁用父视图(不是子视图)的父视图上打开子视图(自定义)?

在子视图中与 UITableView 交互

iOS10 UI教程禁用视图与用户的交互