在整个屏幕中禁用用户交互

Disabling user interaction in entire screen

我有一个主控制器并在用户选择排序时添加选择器视图。我想禁用除选择器控件(取消和完成按钮)之外的完整用户交互。我将选择器作为子视图添加到 window.

我尝试在动画前后使用跟随,但它禁用了包括选择器控件在内的所有内容。

UIApplication.shared.beginIgnoringInteractionEvents()
UIApplication.shared.endIgnoringInteractionEvents()

是否有任何其他解决方案来禁用应用程序范围内的用户交互?

由于选择器已添加到 window 的视图中,您可以在当前 VC 中执行此操作

self.view.isUserInteractionEnabled =  // true/false

你也有导航,你也可以

self.navigationController?.navigationBar.isUserInteractionEnabled =  // true/false

您的尝试适用于 UIApplication.shared,即整个申请。您可以通过在要禁用的一个或多个视图上设置 isUserInteractionEnabled 属性 来尝试仅禁用一个 window、一个视图或一系列视图。

不过请注意,您尝试的是非典型设计。用户通常应该能够点击屏幕上的任何内容。例如,如果用户点击左上角的后退按钮,键盘应该关闭并显示上一个视图。

如果由于某种原因这个选择确实需要是模态的,那么在这个选择上呈现一个模态视图控制器可能会更简单。