2016-01-23 134 views
1

我正在尝试使用UIBezierPath编写程序并触及方法。 我被两个触摸方法困惑:什么时候iOS触及方法(取消和结束)调用?

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

当这些方法被称为我不明白,或者我怎么可以给他们打电话。起初我以为他们都是一样的,直到我在某处看到他们不是。问题是:我怎样才能调用这些方法之一,它们又有什么不同?

回答

3

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

请参考Apple's guide关于子类UIResponder关于如何实现这些方法的更多细节。

Apple's documentation- (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event方法:

告诉当一个或多个手指从一个视图或窗口所提出的应答。

Apple's documentation- (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event方法:

发送到接收器时,系统事件(如低存储器警告)取消的触摸事件。

1

This document苹果给你关于touchesCancelled事件回答:

如果响应者造成持久的对象,而处理事件,它应该实现touchesCancelled:withEvent:方法来处理这些对象的,如果系统取消序列。 当外部事件(例如传入电话)中断当前应用程序的事件处理时发生取消。请注意,响应者对象在收到多点触控序列的最后一个touchesEnded:withEvent:消息时,也应处理任何持久对象。

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

相关问题