滚动视图滚动时如何调用 uipangesture?

Posted

技术标签:

【中文标题】滚动视图滚动时如何调用 uipangesture?【英文标题】:How to call uipangesture when the scrollview is scrolling? 【发布时间】:2012-11-14 09:10:11 【问题描述】:

我想通过UIPanGestureRecognizer 更改UIScrollView'center。滚动视图正在垂直滚动。我水平平移它。问题是当滚动视图仍在滚动时如何检测UIPanGestureRecognizer? 提前谢谢!

【问题讨论】:

你想改变 UIScrollView 的中心(移动整个 UIScrollView)或者你想改变 UIScrollView 在平移时设置的 contentOffset? 好吧,我只是想改变它的中心来改变整个uiscrollview的位置。当scrollview滚动时很难欺骗pangesture。实际上,起初我使用触摸事件来移动scrollview并覆盖uiscrollview 的子视图中的触摸事件,但它不起作用。 我已经编辑了我的答案,你可以检查这是否有效。 【参考方案1】:

编辑:您可以自定义您的UIScrollView 并覆盖此方法:

#import "MyScrollView.h"

@implementation MyScrollView

- (BOOL)touchesShouldCancelInContentView:(UIView *)view

    return YES;


@end

self.panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
self.panGesture.delegate = self;
[self.view addGestureRecognizer:self.panGesture];

- (void)handlePan:(UIGestureRecognizer *)gestureRecognizer

    if (gestureRecognizer.state == UIGestureRecognizerStateEnded) 
        CGPoint offset = self.scrollView.contentOffset;
        offset.y = self.scrollView.contentSize.height/2;
        self.scrollView.contentOffset = offset;
    


- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch

    return YES;

【讨论】:

NO.该方法在scrollview正在滚动时不起作用。 你能再试试我的代码吗?我已经测试过了,我确定 handlePan: 被调用了。您只需要更改滚动视图的中心而不是内容偏移量。 我知道是在scrollview的指示器消失的时候调用的。我想我们可以用email交换。我们都是中国人。啊... 给我发电子邮件或使用我的电子邮件地址添加 MSN。

以上是关于滚动视图滚动时如何调用 uipangesture?的主要内容,如果未能解决你的问题,请参考以下文章

在某些情况下让 superview 响应 subView 的 UIPanGesture

在自定义视图中调用 onTouchEvent() 时防止 RecycleView 滚动

列表视图滚动时复选框自动调用onCheckedChange?

滚动视图内不可滚动的表视图

在iOS中从左到右滚动时如何在Web视图中获取滚动方向?

滚动其中一个时如何滚动多个QGraphicsView(无滚动条)