jeb*_*cky 9 iphone objective-c uigesturerecognizer ios
想知道当我调用setCancelsTouchesInView时会发生什么.它未包含在官方文档http://developer.apple.com/library/ios/#documentation/uikit/reference/UIGestureRecognizer_Class/Reference/Reference.html中
谢谢
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在取消之前,您可能会获得多个.
因此,如果您设置cancelsTouchesInView为YES(默认值),系统将在从手势识别器发送第一条消息之前取消触摸,并且您将不再获得该触摸的任何触摸相关消息.
如果手势识别器cancelsTouchesInView设置为NO,则应用程序将记录以下消息:
touchesBegan
touchesMoved
panGesture
touchesMoved
panGesture
touchesMoved
panGesture
(etc.)
panGesture
touchesEnded
Run Code Online (Sandbox Code Playgroud)
因此,如果设置cancelsTouchesInView为NO,系统将继续发送手势触摸的触摸相关消息,与手势识别器的消息交错.触摸将正常结束而不是被取消(除非系统因某些其他原因取消触摸,例如在触摸期间按下主页按钮).
| 归档时间: |
|
| 查看次数: |
8003 次 |
| 最近记录: |