滚动视图滚动时如何调用 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 滚动