0

就我而言,我对内容有看法。我想在UILongPressGestureRecognizer事件中滚动此内容:

  • 如果触摸位置 y 足够靠近向上视图边框,则向上滚动;
  • 如果触摸位置 y 足够靠近底部视图边框,则向下滚动。

我不能简单地使用scrollView,所以我使用了CATransform3D结构和animateWithDuration:...方法。问题是我不知道我应该滚动多久(滚动动画的持续时间)。第二个问题是当触摸位置(长按手势)改变时应该调用动画 - 这看起来很容易,但可能会对最终解决方案产生影响。

如何解决这样的问题?

4

1 回答 1

0

我不确定我是否正确理解了您的问题,在这里我分享一种方法,longPressRecognizer只要用户按下该视图,该方法就会监听该视图并为其设置动画。当用户停止按下时,视图动画回到其默认状态。您可以通过将位置检查语句添加到 if/else if 来检查用户手势是否满足您的位置条件。希望有帮助。

- (void)longPressed:(UILongPressGestureRecognizer *)recognizer {
    UIView *longPressView = self.longPressView;
    if (recognizer.state == UIGestureRecognizerStateBegan) {
        [UIView animateWithDuration:longPressDuration
                              delay:0.f
                            options:UIViewAnimationOptionCurveLinear|UIViewAnimationOptionBeginFromCurrentState
                         animations:^{
                             //do stuff
                         }
                         completion:^(BOOL finished) {
                             if (finished) {
                                 //long press exceeded time limit: do stuff
                             }
                         }];
    }
    else if (recognizer.state == UIGestureRecognizerStateEnded) {
        [UIView animateWithDuration:longPressDuration/2.0
                              delay:0.f
                            options:UIViewAnimationOptionCurveEaseInOut|UIViewAnimationOptionBeginFromCurrentState
                         animations:^{
                             //do stuff
                         }
                         completion:nil];
    }
}
于 2015-05-22T13:05:24.743 回答