Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 由于重置contentoffset,无法识别嵌入UIScrollView的customview中的触摸_Ios_Uiscrollview_Contentoffset - Fatal编程技术网

Ios 由于重置contentoffset,无法识别嵌入UIScrollView的customview中的触摸

Ios 由于重置contentoffset,无法识别嵌入UIScrollView的customview中的触摸,ios,uiscrollview,contentoffset,Ios,Uiscrollview,Contentoffset,我有一个UIScrollView,其中包含一个自定义工程视图。工程视图用于绘制大型内容(10000x1000像素)。因为我不能在scrollview中嵌入大视图[由于内存限制],所以我创建了一个自定义视图,它的大小几乎是scrollview的两倍。我使用了StreetScroller[苹果示例]逻辑来实现同样的功能。这很好,但在识别触摸时存在问题。您可以从这里下载更新的示例 因为每当scrollview从中心移动“X像素量”时,它的contentOffset都会重置为中心。因此,scrollVi

我有一个UIScrollView,其中包含一个自定义工程视图。工程视图用于绘制大型内容(10000x1000像素)。因为我不能在scrollview中嵌入大视图[由于内存限制],所以我创建了一个自定义视图,它的大小几乎是scrollview的两倍。我使用了StreetScroller[苹果示例]逻辑来实现同样的功能。这很好,但在识别触摸时存在问题。您可以从这里下载更新的示例

因为每当scrollview从中心移动“X像素量”时,它的contentOffset都会重置为中心。因此,scrollView内容偏移量与我们实际需要的不同。这就是我们在scrollView中所做的

- (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的边界,使其不能无限滚动。我想只显示内容,并避免滚动,如果用户试图进一步滚动它