3

如何检测我的 interactivePopGestureRecognizer 是否已完成并将返回(弹出)到前一个视图控制器或 shift 是不够的。然后当前视图控制器将回到他的正常位置。

我的代码:

if ([self respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
    [self.interactivePopGestureRecognizer addTarget:self action:@selector(defaultGestureAction:)];
}

- (void)defaultGestureAction:(UIGestureRecognizer *)sender {

   if (sender.state == UIGestureRecognizerStateBegan || sender.state == UIGestureRecognizerStateChanged) {

   } else {

   //this code is fired when I touch up
   //is there any way to check this action (pop or stay)?
   }
}
4

1 回答 1

1

我认为没有任何可以使用的标志表明该手势是积极的还是消极的。

您可以通过分析平移点和速度自行尝试执行此操作:

- (void)defaultGestureAction:(UIScreenEdgePanGestureRecognizer *)sender
{
    if (sender.state == UIGestureRecognizerStateEnded)
    {
        CGPoint translatedPoint = [(UIScreenEdgePanGestureRecognizer*) sender translationInView:[sender view]];
        if(translatedPoint.x > self.view.bounds.size.width * 0.5f || [sender velocityInView:self.view].x > 500.0f)
        {
            //did trigger translation
        }
        else
        {
            //did cancel translation
        }
    }
}
于 2015-09-10T10:01:45.680 回答