gpt4 book ai didi

ios - 在 UIView 子类中实现 UIResponder 触摸方法是否违反了 MVC?

转载 作者:行者123 更新时间:2023-11-29 00:45:24 24 4
gpt4 key购买 nike

以下 UIResponder 方法报告屏幕上的原始触摸:

- touchesBegan:withEvent:
- touchesMoved:withEvent:
- touchesEnded:withEvent:

最近我正在使用一个 UIView 子类,我想要它具有触摸响应能力。

最初,我在负责相关 View 的 UIViewController 中实现了上述方法。

但是,我意识到每当 UIViewControllers View 被触摸时都会调用触摸方法,而不是我想要的 subview 。

我重新实现了 UIView 子类中的方法,一切都按预期工作。

但是我觉得这违反了 MVC。我的 View 中有控制逻辑。

我应该保留在 UIViewController 中实现的方法,并以某种方式点击测试来解释哪个 View 被触摸,或者我在 UIView 子类中实现的方法是否正确?

我觉得后者是懒惰的出路。

感谢您的宝贵时间。

最佳答案

在 MVC 中, View 负责用户交互。因此,在 UIView 中覆盖 UIResponder 方法更有意义。为了严格遵守 MVC,您应该使用 delegate pattern (或其他模式)调用 Controller 中的控制逻辑函数。

enter image description here

上图来自(Apple's MVC documentation)。与您的问题相关的部分在左上角。 View 应该告诉 Controller 它已被触摸等, Controller 应该执行逻辑。

UIViewController 只能实现这些方法,因为它带有内置 View 。这令人困惑,因为这意味着 UIViewController 本身违反了 MVC,但这是一个更复杂的讨论。

关于ios - 在 UIView 子类中实现 UIResponder 触摸方法是否违反了 MVC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38662532/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com