【发布时间】:2016-12-04 09:22:01
【问题描述】:
以下UIResponder 方法报告屏幕上的原始触摸:
- touchesBegan:withEvent:
- touchesMoved:withEvent:
- touchesEnded:withEvent:
最近我在玩 UIView 子类,我希望它具有触控响应能力。
最初,我在负责相关视图的UIViewController 中实现了上述方法。
但是,我意识到每当触摸 UIViewControllers 视图时都会调用触摸方法,而不是我想要的子视图。
我重新实现了 UIView 子类中的方法,一切都按预期工作。
但是我觉得这违反了 MVC。我的视图中有控制逻辑。
我是否应该保留在 UIViewController 中实现的方法,并以某种方式命中测试 来解释哪个视图被触摸,或者我在 UIView 子类中实现方法是否正确?
我觉得后者是偷懒的出路。
感谢您的宝贵时间。
【问题讨论】:
-
您应该在视图中覆盖它。你的视图还有什么可重用的?您不必在每个拥有一个视图控制器的视图控制器中实现
UIButton的触摸处理,它会响应触摸事件本身。 -
这不违反 MVC 吗?
-
您绝对可以在违反 MVC 的方法中做一些事情,但覆盖它们本身并不会违反 MVC。
UIView是UIResponder的子类,这是有原因的。 -
谢谢@dan,移动视图本身是否违反?
标签: ios iphone uiview uikit uiresponder