MrD*_*rDB 23 iphone event-handling gesture-recognition uislider uigesturerecognizer
有手势相关的问题.我实现了UISwipeGestureRecognizer以获得向左和向右滑动事件,并且工作正常.然而,我面临的问题是我在同一视图中的UISlider不是很好玩.滑块的滑动被误认为是向左/向右滑动.
以前有人遇到过这个问题,有什么想法可以纠正吗?
非常感谢.
以下是视图控制器中包含的代码:
- (void)viewDidLoad {
[super viewDidLoad];
//Setup handling of LEFT and RIGHT swipes
UISwipeGestureRecognizer *recognizer;
recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)];
[recognizer setDirection:(UISwipeGestureRecognizerDirectionRight)];
[[self view] addGestureRecognizer:recognizer];
[recognizer release];
recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeFrom:)];
[recognizer setDirection:(UISwipeGestureRecognizerDirectionLeft)];
[[self view] addGestureRecognizer:recognizer];
[recognizer release];
}
-(void)handleSwipeFrom:(UISwipeGestureRecognizer *)recognizer {
if (recognizer.direction == UISwipeGestureRecognizerDirectionRight) {
NSLog(@"Swipe Right");
//Do stuff
}
if (recognizer.direction == UISwipeGestureRecognizerDirectionLeft) {
NSLog(@"Swipe Left");
//Do stuff
}
}
Run Code Online (Sandbox Code Playgroud)
Lil*_*ard 57
处理此问题的最简单方法可能是防止手势识别器看到滑块上的触摸.您可以通过将自己设置为委托,然后实施来实现
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
if ([touch.view isKindOfClass:[UISlider class]]) {
// prevent recognizing touches on the slider
return NO;
}
return YES;
}
Run Code Online (Sandbox Code Playgroud)
如果这不起作用,滑块实际上可能具有接收触摸的子视图,因此您可以superview沿着链向上走,沿途测试每个视图.
| 归档时间: |
|
| 查看次数: |
8769 次 |
| 最近记录: |