![](/img/trans.png)
[英]Will handling UIButton touch event inside a UITableViewCell subclass violate 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.