Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(iphone)超级触摸开始/移动/结束的功能是什么?_Iphone_Touch_Super - Fatal编程技术网

(iphone)超级触摸开始/移动/结束的功能是什么?

(iphone)超级触摸开始/移动/结束的功能是什么?,iphone,touch,super,Iphone,Touch,Super,大多数重载方法都需要调用[super-theMethod] (例如,[super viewDidLoad];,[super viewwillbeen];和[super dealoc];) 我没有再三考虑是否需要[超级触控开始:withEvent:呼叫,但它似乎在某种程度上发挥了作用 我什么时候需要,什么时候不需要 我试图在需要时通过编程取消触摸事件,这似乎与我提出的问题有关 虽然这一切都取决于对象的预期行为,但让我们指出一个基本问题:如果希望由超类实现默认行为,可以使用重写方法(您的意思是重写,

大多数重载方法都需要调用
[super-theMethod]

(例如,
[super viewDidLoad];
[super viewwillbeen];
[super dealoc];

我没有再三考虑是否需要
[超级触控开始:withEvent:
呼叫,但它似乎在某种程度上发挥了作用

我什么时候需要,什么时候不需要


我试图在需要时通过编程取消触摸事件,这似乎与我提出的问题有关

虽然这一切都取决于对象的预期行为,但让我们指出一个基本问题:如果希望由超类实现默认行为,可以使用重写方法(您的意思是重写,而不是重载)调用超类实现

所以你应该问的问题是:

1) 超类实现做什么

2) 我的物品需要它吗

那么您的超类的
touchsbegind:withEvent:
等做什么呢?这取决于您的类层次结构。类层次结构中的自定义类可能已经覆盖了这些方法,您可能想要这些行为,也可能不想要。我假设还没有自定义类重写这些方法,所以您只需要检查Cocoa实现

touchsbegind:withEvent:
首先在UIResponder类中定义。让我们看一下,上面写着

此方法的默认实现不执行任何操作。但是UIResponder的即时UIKit子类,特别是UIView,将消息转发到响应器链上

所以你得到了一个理论。如果您的类直接从UIResponder继承,则根本不需要调用超类实现,因为它不会执行任何操作。如果它继承自其他UIKit子类(如UIView),则调用超类实现将允许在响应程序链上转发消息。但是,重写
touchsbegind:withEvent:
可能意味着您的子类希望自己处理touch事件,因此您不希望将事件转发到响应程序链上。所以,我猜您不想在这里调用超类实现

这要视情况而定。比方说,您将UIScrollView子类化,并实现一个
touch…
方法。如果您仍然希望视图在用户拖动时滚动,那么您需要调用超类实现,因为它将为您处理滚动


总之,你必须能够回答以上两个问题才能做出决定。要了解超类实现的功能,请阅读中的。在许多情况下,如果超类实现所做的工作对于常见的预期行为至关重要,那么指导文档会给出一个明确的建议,即调用超类实现。

ah,谢谢,这就是为什么我需要在scrollview子类+1上使用超类调用来指出UIView覆盖ToucheSBegind:withEvent:以将消息转发到响应者链上。直到视图不使用触摸事件。