Ios 由于重置contentoffset,无法识别嵌入UIScrollView的customview中的触摸
我有一个UIScrollView,其中包含一个自定义工程视图。工程视图用于绘制大型内容(10000x1000像素)。因为我不能在scrollview中嵌入大视图[由于内存限制],所以我创建了一个自定义视图,它的大小几乎是scrollview的两倍。我使用了StreetScroller[苹果示例]逻辑来实现同样的功能。这很好,但在识别触摸时存在问题。您可以从这里下载更新的示例 因为每当scrollview从中心移动“X像素量”时,它的contentOffset都会重置为中心。因此,scrollView内容偏移量与我们实际需要的不同。这就是我们在scrollView中所做的Ios 由于重置contentoffset,无法识别嵌入UIScrollView的customview中的触摸,ios,uiscrollview,contentoffset,Ios,Uiscrollview,Contentoffset,我有一个UIScrollView,其中包含一个自定义工程视图。工程视图用于绘制大型内容(10000x1000像素)。因为我不能在scrollview中嵌入大视图[由于内存限制],所以我创建了一个自定义视图,它的大小几乎是scrollview的两倍。我使用了StreetScroller[苹果示例]逻辑来实现同样的功能。这很好,但在识别触摸时存在问题。您可以从这里下载更新的示例 因为每当scrollview从中心移动“X像素量”时,它的contentOffset都会重置为中心。因此,scrollVi
- (void)recenterIfNecessary
{
CGPoint currentOffset = [self contentOffset];
CGFloat contentHeight = [self contentSize].height;
CGFloat contentWidth = [self contentSize].width;
CGPoint centerOffset,distanceFromCenter;
centerOffset.y = (contentHeight - [self bounds].size.height) / 2.0;
distanceFromCenter.y = fabs(currentOffset.y - centerOffset.y);
centerOffset.x = (contentWidth - [self bounds].size.width) / 2.0;
distanceFromCenter.x = fabs(currentOffset.x - centerOffset.x);
if (distanceFromCenter.y > (contentHeight / 6.0))
{
self.contentOffset = CGPointMake(currentOffset.x, centerOffset.y);
[_labelContainerView didResetByVerticalDistancePoint:CGPointMake(currentOffset.x, centerOffset.y - currentOffset.y) visibleFrame:[self bounds]];
}
if (distanceFromCenter.x > (contentWidth / 6.0))
{
self.contentOffset = CGPointMake(centerOffset.x, currentOffset.y);
[_labelContainerView didResetByHorizontalDistancePoint: CGPointMake(centerOffset.x - currentOffset.x, currentOffset.y) visibleFrame:[self bounds]];
}
}
每当scrollview重置中心时,将通知自定义视图并跟踪虚拟内容偏移量
-(void)didResetByVerticalDistancePoint:(CGPoint)distance visibleFrame:(CGRect)frame
{
_contentOffsetY += distance.y;
NSLog(@"_contentOffsetY %f",_contentOffsetY);
[self setNeedsDisplay];
}
但是,我想在滚动视图滚动时计算虚拟内容偏移量[目前,仅当我们将滚动视图的内容偏移量重置为中心时,才计算内容偏移量]。这将最终帮助我处理触摸
另外,我需要一种方法来限制scrollview的边界,使其不能无限滚动。我想只显示内容,并避免滚动,如果用户试图进一步滚动它