我正在尝试使用UIBezierPath编写程序并触及方法。 我对两种接触方法感到困惑:
- (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event;
- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event;
我不明白何时调用这些方法或如何调用它们。起初我以为它们都是一样的,直到我读到它们不是的地方。问题是:我如何调用其中一种方法,它们之间的区别如何?
答案 0 :(得分:3)
你不应该调用这些方法。它们由 Cocoa 框架为您调用。您只需要实现它们以提供Abstract
或您的自定义UIResponser
子类的子类的正确(本机)行为。
有关如何实施这些方法的详细信息,请参阅Apple's guide关于子类UIGestureRecognizer
的内容。
从Apple's documentation关于UIResponder
方法:
告诉响应者何时从视图或窗口抬起一个或多个手指。
从Apple's documentation关于- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
方法:
当系统事件(例如低内存警告)取消触摸事件时发送到接收器。
答案 1 :(得分:1)
This document为您提供有关touchesCancelled
事件的答案:
如果响应者在处理事件时创建持久对象,它应该实现
touchesCancelled:withEvent
:方法,以便在系统取消序列时处置这些对象。 当外部事件(例如传入的电话呼叫)中断当前应用的事件处理时会发生取消。请注意,响应者对象在收到最后一个{{1}时也应该处置任何持久对象消息为多点触控序列。
在应用程序中为自定义对象实现自定义触摸事件处理时,这些方法是必需的。 它允许您在用户停止触摸自定义对象或取消触摸时清理资源。