如果我在View Controller中为View编写touches事件会怎样?

时间:2012-01-30 13:43:46

标签: ios

我见过代码片段,人们在视图的视图控制器中写了touchesBegan和touchesEnded。

我对iOS开发相对较新,我无法理解这是怎么可能的。

我们在自定义视图中覆盖了UIView类的这些方法。

如果它可能那么如果我调用view的触摸事件哪个版本获得优先权? 视图控制器中的一个或视图本身中的一个。

2 个答案:

答案 0 :(得分:3)

正如您可以在文档中轻松查找的那样,touches...:withEvent:类方法在UIResponder类中声明。由于UIViewUIViewController都继承自UIResponder,因此两个类都可以访问这些方法并可以覆盖它们。

关于哪个实现在两者都实现时获得优先级的问题,这是由响应者链定义的。触摸事件沿响应者链向上移动,直到找到想要处理事件的对象。由于视图放在响应程序链中的视图控制器之前,因此将执行视图类中的实现。

答案 1 :(得分:0)

视图控制器也有这些方法的副本。这是为了方便,因此您不必为了处理触摸交互而创建自定义UIView子类。

如果视图和视图控制器都实现了这些方法,那么当用户触摸屏幕时它们都被调用,但是我相信视图中的那些首先被调用。

请注意,从iOS 3.2 / 4.0开始,UIGestureRecognizer通常是一种更简单的方式来进行大多数类型的触摸交互。很少有人需要使用touchesBegan和touchesEnded。