小编Bla*_*ode的帖子

制作类似于新版Google地图iOS应用的向上滑动视图,会遇到多个UIPanGestureRecognizer的麻烦

我正在尝试重现新iOS Google地图应用程序的上滑菜单的行为.

所以基本上它是一个视图,您可以向上滑动以平移到某个点或向下滑动到某个点.此视图也可以像分页滚动视图一样向右和向左滑动.

它应该向上或向下滚动或向侧面滑动,但不能同时向两侧滑动.

经过大量的研究和测试后,我有一些接近但不太合适的东西.

我的实现是一个UIScrollView,框架为320x400,内容视图为960x400,带有分页滚动.然后我添加一个UIPanGestureRecognizer来处理整个视图的向上滑动.

这是PanRecognizer的handleTouch IBAction:

- (IBAction)handlePan:(UIPanGestureRecognizer *)sender {
NSLog(@"Panning");
    CGPoint translatedPoint = [(UIPanGestureRecognizer*)sender translationInView:self.view];

    if([(UIPanGestureRecognizer*)sender state] == UIGestureRecognizerStateBegan) {
        _firstX = [[sender view] center].x;
        _firstY = [[sender view] center].y;
    }
    if (!IS_IPHONE_5) {
        if (_firstY < 216)
            translatedPoint = CGPointMake(_firstX, 216);
        else
            translatedPoint = CGPointMake(_firstX, _firstY+translatedPoint.y);
    }
    else {
        if (_firstY < 307)
            translatedPoint = CGPointMake(_firstX, 307);
        else
            translatedPoint = CGPointMake(_firstX, _firstY+translatedPoint.y);
    }
    [[sender view] setCenter:translatedPoint];
    if([(UIPanGestureRecognizer*)sender state] == UIGestureRecognizerStateEnded) {
        CGFloat velocityY = (0.2*[(UIPanGestureRecognizer*)sender velocityInView:self.view].y); …
Run Code Online (Sandbox Code Playgroud)

google-maps slideup uiscrollview ios uipangesturerecognizer

8
推荐指数
1
解决办法
3355
查看次数