如何禁用子视图后面的用户交互?

时间:2018-05-31 09:26:49

标签: ios swift subview uicontainerview user-interaction

在我的项目中有一个 A 视图,在此视图中有一个容器视图,显示了几个按钮。如果我点击这些按钮,则会出现另一个子视图。

当用户点击按钮并出现子视图时,我想要禁用显示的此子视图之外的所有交互。 感谢。

3 个答案:

答案 0 :(得分:0)

请勿将其他子视图添加到容器视图中。将其添加到一个视图或为子视图创建第二个容器视图。 然后禁用按钮容器视图的用户交互。

containerView.userInteractionEnabled = false

答案 1 :(得分:0)

显示子视图后,您可以迭代到其所有超级视图并将其用户交互设置为false。

UIView* temp = self.view.superview;
temp.userInteractionEnabled = false;

现在,你可以递归调用它到它的所有超级视图来禁用其他功能。

答案 2 :(得分:0)

有两种方法可以做到这一点

1)禁用backgroundView的用户段。但是,你不应该补充    您的新视图作为backgroundView的子视图。你需要将新视图添加为superview的子视图。

self.view.addSubView(YOUR_NEW_VIEW)

然后你必须为你的backgroundView

禁用用户插入
YOUR_BACKGROUND_VIEW.userInteractionEnabled = false

2)添加一个UIView作为backgroundView的子视图,该视图的边界和backgroundColor为.clear

let tempView = UIView(frame: YOUR_BACKGROUND_VIEW.bounds)
tempView.backgroundColor = .clear
YOUR_BACKGROUND_VIEW.addSubView(tempView)

然后将新视图添加到tempView的子视图

tempView.addSubView(YOUR_NEW_VIEW)

选择适合您的那个。 希望这会对你有所帮助