rob*_*off 32

ACB引用了该UIGestureRecognizer参考文献.为了让多一点具体的,假设你有一个连接泛手势识别一个视图,你必须在你的视图控制器这些方法:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    NSLog(@"touchesBegan");
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    NSLog(@"touchesMoved");
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    NSLog(@"touchesEnded");
}

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
    NSLog(@"touchesCancelled");
}

- (IBAction)panGestureRecognizerDidUpdate:(UIPanGestureRecognizer *)sender {
    NSLog(@"panGesture");
}
Run Code Online (Sandbox Code Playgroud)

当然,平移手势识别器被配置为发送panGestureRecognizerDidUpdate:消息.

现在假设您触摸视图,移动手指足以识别平移手势,然后抬起手指.该应用程序打印什么?

如果手势识别器cancelsTouchesInView设置为YES,则应用程序将记录以下消息:

touchesBegan
touchesMoved
touchesCancelled
panGesture
panGesture
(etc.)
Run Code Online (Sandbox Code Playgroud)

touchesMoved在取消之前,您可能会获得多个.

因此,如果您设置cancelsTouchesInViewYES(默认值),系统将在从手势识别器发送第一条消息之前取消触摸,并且您将不再获得该触摸的任何触摸相关消息.

如果手势识别器cancelsTouchesInView设置为NO,则应用程序将记录以下消息:

touchesBegan
touchesMoved
panGesture
touchesMoved
panGesture
touchesMoved
panGesture
(etc.)
panGesture
touchesEnded
Run Code Online (Sandbox Code Playgroud)

因此,如果设置cancelsTouchesInViewNO,系统将继续发送手势触摸的触摸相关消息,与手势识别器的消息交错.触摸将正常结束而不是被取消(除非系统因某些其他原因取消触摸,例如在触摸期间按下主页按钮).

  • 我不明白“取消弹出”是什么意思。 (2认同)