我能够理解,当用户触摸视图时,触及Began和Ended.当用户在视图上滑动手时,触摸Moved方法被调用.但什么时候触及Canceled得到调用或者用户对该方法的调用是什么?
Stu*_*art 33
我认为可能是调用touchesCancelled的最常见原因(因为iOS 3.2无论如何)是跟随UIGestureRecognizer识别手势.如果您的视图附加了任何类型的手势识别器,那么提供touchesCancelled方法的自定义实现通常非常重要 - 请注意这包括使用手势识别器(包括UIScrollView)的现成视图.
默认情况下,手势识别器会在识别时取消触摸测试视图的触摸传递,但可以禁用此行为.这涉及将touchesCancelled消息发送到该视图,最有可能是在touchesBegan或touchesMoved消息之后.如果您的触摸处理代码依赖于touchesEnded方法中实现的代码,则可能永远不会触发此问题并且可能发生某种严重问题,因此需要在touchesCancelled中正确绑定任何松散的末尾.
手势识别器功能的细节显然比我在这里提到的要复杂得多 - 我会完全推荐阅读Apple的Gesture Recognizers文档.
另外,查看手势识别器上的WWDC视频(从2010年开始).
小智 14
注意:如果您之后开始UIView动画,触摸也会被取消touchesBegan.为了防止这种情况,请确保包含UIViewAnimationOptionAllowUserInteraction:
例如
[UIView animateWithDuration:0.3 delay:0 options:UIViewAnimationOptionAllowUserInteraction animations:^{
self.aView.hidden = NO;
self.aView.alpha = 1;
} completion:nil];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13123 次 |
| 最近记录: |