何时调用 iOS 触摸方法(已取消和已结束)?



我正在尝试使用UIBezierPath编写一个程序并触摸方法。我对两种触摸方法感到困惑:

- (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event;
- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event;

我不明白何时调用这些方法或如何调用它们。起初我以为它们都是一样的,直到我在某处读到它们不是。问题是:我如何调用这些方法之一,它们彼此之间有何不同?

你不应该调用这些方法。它们由可框架为您调用。您只需要实现它们即可为您的UIResponser子类或自定义UIGestureRecognizer子类提供正确的(本机)行为。

请参阅 Apple 关于子类化UIResponder的指南,了解有关如何实现这些方法的更多详细信息。

来自Apple关于- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event方法的文档:

当一个或多个手指从视图或窗口中抬起时,告诉响应者。

来自Apple关于- (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event方法的文档:

当系统事件(如内存不足警告)取消触摸事件时发送到接收器。

Apple的这份文档为您提供有关touchesCancelled事件的答案:

如果响应程序在处理事件时创建持久对象,则当系统取消序列时,它应实现 touchesCancelled:withEvent : 方法来释放这些对象。当外部事件(例如,传入电话呼叫)中断当前应用的事件处理时,会发生取消。请注意,响应程序对象在收到多点触控序列的最后一条touchesEnded:withEvent:消息时,还应释放任何持久性对象。

在应用程序中为自定义对象实现自定义触摸事件处理时,这些方法是必需的。它允许您在用户停止触摸您的自定义对象或取消触摸时清理资源。

相关内容

  • 没有找到相关文章

最新更新