遇到与手势相关的问题。我实现了 UISwipeGestureRecognizer 来获取向左和向右滑动事件,并且工作正常。然而,我面临的问题是,我在同一 View 中的 UISlider 玩得不好。 slider 的滑动 Action 被误认为是向左/向右滑动。
有人以前遇到过这个问题,有什么解决办法吗?
非常感谢。
这是 View Controller 中包含的代码:
- (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
}
}
最佳答案
处理此问题的最简单方法可能是防止手势识别器看到 slider 上的触摸。您可以通过将自己设置为委托(delegate)人,然后实现来做到这一点
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
if ([touch.view isKindOfClass:[UISlider class]]) {
// prevent recognizing touches on the slider
return NO;
}
return YES;
}
如果这不起作用,则 slider 实际上可能有接收触摸的 subview ,因此您可以沿着superview
链向上走,沿途测试每个 View 。
关于iphone - 手势问题: UISwipeGestureRecognizer + UISlider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4765661/