iOS:有没有一种标准方法来检查用户是否与给定元素以外的其他UI元素进行交互?



这似乎是每个iOS应用程序都需要的东西,但我找不到任何相关信息,可能是因为很难连贯地表达这个问题。

具体来说,每当用户与应用程序界面中除给定元素(上述按钮)以外的任何其他内容进行交互时,我需要执行某个操作(隐藏几个按钮)。

举个例子:想想苹果提供的滑动动作按钮的工作方式,即当你在表格单元格中从右向左滑动时,按钮会滑出,但如果你尝试点击/拖动/做动作按钮之外的任何其他事情,它们会再次滑开,界面不会响应你尝试执行的任何动作, 从而确保当用户在应用程序中执行其他操作时,按钮永远不会挂起。

所以我的问题:是否有一种标准方法可以做到这一点,例如某些委托函数会自动捕获除特定元素之外的用户与 UI 的任何交互?

还是我必须编写代码来检查用户当时是否在屏幕上的所有其他 UI 元素上点击/拖动/等?

想想Apple提供的滑动操作按钮的工作方式,即当您在表格单元格中从右向左滑动时,按钮会滑出,但是如果您尝试点击/拖动/执行操作按钮之外的任何其他操作,它们会再次滑开,并且界面不会响应您尝试执行的任何操作, 从而确保当用户在应用程序中执行其他操作时,按钮永远不会挂起。所以我的问题:有没有一种标准的方法可以做到这一点

覆盖主视图的func hitTest(CGPoint, with: UIEvent?)。所有触摸都经过这里,告诉您触摸了哪个子视图。

所以通常情况下,你只会返回调用super的结果。但是当你处于这种特殊模式时,你实际上会看看super会给你带来什么。如果它是交互式子视图,请返回它,以便用户可以以正常方式与之交互。否则,不要返回它(返回nil)并执行其他任何您想做的事情(例如,离开特殊模式并恢复界面)。

最新更新