我正在使用UIPanGestureRecognizer在视图中移动imageview,并使用UISwipeGestureRecognizer从视图中删除imageview。这是我的代码。
- (void)viewDidLoad
{
UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
panRecognizer.delegate = self;
[imgView1 addGestureRecognizer:panRecognizer];
[panRecognizer release];
UISwipeGestureRecognizer *swipeRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipe:)];
swipeRecognizer.delegate = self;
swipeRecognizer.direction = (UISwipeGestureRecognizerDirectionLeft |
UISwipeGestureRecognizerDirectionRight);
[imgView1 addGestureRecognizer:swipeRecognizer];
[swipeRecognizer release];
}
-(void)handleSwipe:(UITapGestureRecognizer *)recognizer{
NSLog(@"swipe");
UIView *viewGes = [recognizer view];
[viewGes removeFromSuperview];
}
- (void)handlePan:(UIPanGestureRecognizer *)recognizer {
NSLog(@"handlePan");
CGPoint translation = [recognizer translationInView:self.view];
recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x,
recognizer.view.center.y + translation.y);
[recognizer setTranslation:CGPointMake(0, 0) inView:self.view];
if (recognizer.state == UIGestureRecognizerStateEnded) {
CGPoint velocity = [recognizer velocityInView:self.view];
CGFloat magnitude = sqrtf((velocity.x * velocity.x) + (velocity.y * velocity.y));
CGFloat slideMult = magnitude / 200;
float slideFactor = 0.1 * slideMult; // Increase for more of a slide
CGPoint finalPoint = CGPointMake(recognizer.view.center.x + (velocity.x * slideFactor),
recognizer.view.center.y + (velocity.y * slideFactor));
finalPoint.x = MIN(MAX(finalPoint.x, 0), self.view.bounds.size.width);
finalPoint.y = MIN(MAX(finalPoint.y, 0), self.view.bounds.size.height);
[UIView animateWithDuration:slideFactor*2 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{
recognizer.view.center = finalPoint;
} completion:nil];
}
}
但我的问题滑动手势无法正常工作。有时会接到电话,有时却不会。一段时间滑动图像,然后将其删除。有谁有想法正确地一起处理两个手势?
最佳答案
确保您的课程符合<UIGestureRecognizerDelegate>
协议。
尝试添加此委托方法(到使用此识别器的类中):
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return YES;
}