首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当手势已处于活动状态时如何启动手势识别器?

当手势已处于活动状态时如何启动手势识别器?
EN

Stack Overflow用户
提问于 2016-05-18 10:10:02
回答 1查看 68关注 0票数 0

我有一个Subview A(self.thumbnailImageView)添加到我的超级视图。我在我的视图A中添加了一个UILongPressGestureRecognizer和UISwipeGestureRecognizer。

代码语言:javascript
复制
[self addLongPressGestureRecognizerForPreviewCell:self.thumbnailImageView];

[self addSwipeUpGestureRecognizerForImageView:self.thumbnailImageView];

现在在处理程序方法中,当UILongPressGestureRecognizer状态开始时,我向我的superview(self.view)添加一个Subview B(bigPreviewImage)。

代码语言:javascript
复制
-(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手势方法。如果我遗漏了什么,请告诉我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-25 10:04:25

明白了!

我们不需要一个单独的刷手势识别。可以使用Long Press手势识别器中的不同状态来处理此场景。

Long Press手势有不同的状态,如UIGestureRecognizerStateBeganUIGestureRecognizerStateChangedUIGestureRecognizerStateEnded

  • 只要您长时间按下子视图,UIGestureRecognizerStateBegan就会被调用。
  • 当用户试图移动手指时,会调用UIGestureRecognizerStateChanged
  • 当用户从触摸点提起手指时,UIGestureRecognizerStateEnded就会被调用。
代码语言:javascript
复制
-(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];
    }

因此,我们可以使用手势代表方法来处理滑动和长按压手势识别器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37296495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档