繁体   English   中英

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

[英]Does implementing UIResponder touch methods inside a UIView subclass violate MVC?

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

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

最近,我正在玩一个UIView子类,我想UIView进行响应。

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

但是,我意识到,只要触摸UIViewControllers视图就可以调用touch方法,而不是我想要的子视图。

我在UIView子类中重新实现了这些方法,并且一切正常。

但是我觉得这违反了MVC。 我的视图内部有控制逻辑。

我应该将实现的方法保留在UIViewController内部,还是以某种方式通过测试来解释被触摸的视图,还是在UIView子类内部实现方法是正确的吗?

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

谢谢你的时间。

在MVC中,视图负责用户交互。 因此,在UIView中覆盖UIResponder方法更有意义。 为了严格遵守MVC,您应该使用委托模式 (或其他某种模式)来调用控制器中的控制逻辑功能。

在此处输入图片说明

上面的图片来自( Apple的MVC文档 )。 与您的问题有关的部分在左上角。 该视图应告诉控制器已被触摸,并且控制器应执行逻辑。

由于UIViewController带有内置视图,因此只能实现这些方法。 这是令人困惑的,因为这意味着UIViewController本身违反了MVC,但这是一个涉及更多的讨论。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM