我有一个Subview A(self.thumbnailImageView)添加到我的超级视图。我在我的视图A中添加了一个UILongPressGestureRecognizer和UISwipeGestureRecognizer。
[self addLongPressGestureRecognizerForPreviewCell:self.thumbnailImageView];
[self addSwipeUpGestureRecognizerForImageView:self.thumbnailImageView];现在在处理程序方法中,当UILongPressGestureRecognizer状态开始时,我向我的superview(self.view)添加一个Subview B(bigPreviewImage)。
-(void)tapGesture:(UILongPressGestureRecognizer *)recognizer{
if (recognizer.state == UIGestureRecognizerStateBegan)
{
// Long press detected, start the timer
[self showPreviewImage:recognizer];
}
else if(recognizer.state == UIGestureRecognizerStateEnded)
{
[self hidePreviewImage];
}
}
-(void)showPreviewImage:(UILongPressGestureRecognizer *)recognizer{
UIImageView *bigPreviewImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Desktop"]];
bigPreviewImage.frame = CGRectMake(self.thumbnailImageView.frame.origin.x - 50.0, self.thumbnailImageView.frame.origin.y + self.thumbnailImageView.frame.size.height + 10.0, 300.0, 250.0);
bigPreviewImage.tag = 10000;//200.0 & 125.0
[bigPreviewImage setUserInteractionEnabled:YES];
[self.view addSubview:bigPreviewImage];
} 现在,一旦UILongPressGestureRecognizer处于活动状态,用户用手指仍按Subview A,如果用户在屏幕上滑动,我希望启动SwipeGestureRecognizer。但同样的情况并没有发生。当手势已处于活动状态时如何启动手势识别器?
我已经实现了shouldRecognizeSimultaneouslyWithGestureRecognizer方法,但是仍然没有调用swipe手势方法。如果我遗漏了什么,请告诉我。
发布于 2016-05-25 10:04:25
明白了!
我们不需要一个单独的刷手势识别。可以使用Long Press手势识别器中的不同状态来处理此场景。
Long Press手势有不同的状态,如UIGestureRecognizerStateBegan、UIGestureRecognizerStateChanged和UIGestureRecognizerStateEnded。
UIGestureRecognizerStateBegan就会被调用。UIGestureRecognizerStateChanged。UIGestureRecognizerStateEnded就会被调用。-(void)longPressGestureForPreviewImageView:(UILongPressGestureRecognizer *)recognizer{
if (recognizer.state == UIGestureRecognizerStateBegan)
{
// Long press detected, start the timer
[self showPreviewImage:recognizer];
}
else if(recognizer.state == UIGestureRecognizerStateChanged)
{
NSLog(@"Swipe up");
if ([self.thumbnailImageView.gestureRecognizers containsObject:recognizer]) {
[self.thumbnailImageView removeGestureRecognizer:recognizer];
}
}
else if(recognizer.state == UIGestureRecognizerStateEnded)
{
[self hidePreviewImage];
}因此,我们可以使用手势代表方法来处理滑动和长按压手势识别器。
https://stackoverflow.com/questions/37296495
复制相似问题