Tag: uiscrollviewdelegate

手动滚动显示相同内容的两个UICollectionViews

正如标题所示,我有一个UIViewController与两个UICollectionViews以水平方式显示相同的内容。 主要一次显示一张照片,大拇指显示几张。 我已经重写了UIScrollViewDelegate方法,并添加了一些代码,以便当用户滚动主要的CV,然后拇指CV也滚动。 不过,我想要启用相反的方式(滚动拇指,这将快速移动主)。 不过,我收到了反馈的效果。 这是我的代码片段: #pragma mark – UIScrollViewDelegate – (void)scrollViewDidScroll:(UIScrollView *)scrollView{ if(scrollView == self.mainCollectionView){ CGFloat x = self.mainCollectionView.contentOffset.x / self.mainCollectionView.bounds.size.width * SM_IPHONE_THUMB_CONTAINER_SIZE; // cell width + spacing 48 + 8 CGFloat y = 0; CGPoint contentOffset = CGPointMake(x, y); self.thumbsCollectionView.contentOffset = contentOffset; } else if(scrollView == self.thumbsCollectionView){ // CGFloat x = self.thumbsCollectionView.contentOffset.x / […]

取消当前的UIScrollView触摸

我有一个UIScrollView几个子视图等。 我也是scrollView的delegate ,并实现了- (void)scrollViewDidScroll:(UIScrollView *)scrollView 。 在我的卷轴下面还有另一种观点。 我想要显示该视图,如果scrollView的contentOffset在x轴上低于50px,请“重置”scrollView的contentOffset并取消当前的scrollView手势,以便用户在新视图出现时不会操作其内容。 我已经实现了这样的方法: – (void)scrollViewDidScroll:(UIScrollView *)scrollView { if (scrollView.contentOffset.x < -50) { scrollView.contentOffset = CGPointZero; [self showBackView]; //here I want to cancel the current touch on the scrollview since it keeps scrolling if I drag my finger } } 我已经尝试将userInteractionEnabled属性设置为NO但只有在触摸结束后才会生效。 我已经尝试了一堆其他的属性,但似乎没有工作。 我怎样才能解决这个问题?

scrollViewWillEndDragging:withVelocity:targetContentOffset:不工作在UISCrollView的边缘

我试图实现一个可滚动的自定义标签栏,并在每个标签栏项目分页。 为此,我使用委托scrollViewWillEndDragging:withVelocity:targetContentOffset:它完美的一个问题。 我的分页工作的方式是,如果contentOffset靠近正确的项目,它targetContentOffset更改为该项目的偏移量。 左边是同样的东西。 问题是,每当我在第一个项目的左半部分和最后一个(滚动视图水平工作)的权利,它应该去的ContentOffset 0和最右边的项目的内容偏移量(减屏幕),但它不。 我使用debugging器进行了检查,并且targetContentOffset-> x确实为0(在第一种情况下 – 最左边的项左侧)。 所以问题是UIScrollView不滚动那里。 我迷路了。 这是我实施的代表: – (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset{ NSInteger index = lrintf(targetContentOffset->x/self.tabWidth); targetContentOffset->x = index * self.tabWidth; } 这是解释我想要做什么的图表。 |——-|——-|——-|——-|——-|——-|——-| | | | | | | | | | | | | | | | | |_______|_______|_______|_______|_______|_______|_______| |_______________________________________| where it is and i […]

使用scrollViewWillEndDragging自定义UIScrollView分页

我试图使用新的scrollViewWillEndDragging:withVelocity:targetContentOffset:在iOS 5的UIScrollView委托调用,但我似乎无法得到它实际回应我正确。 我正在改变targetContentOffset-> x值,但它永远不会被使用。 我知道代码正在运行,因为它会打到该函数的断点。 我甚至尝试将偏移值设置为一个硬编码的数字,所以我会知道它会在哪里结束,但它永远不会工作。 有没有人能够正确使用它,并使其工作? 有没有其他的代表电话必须执行才能使其工作? 这是我的代码,以防有人看到有什么问题: – (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset { // goodOffsetX returns the contentOffset i want the scrollView to stop at CGFloat goodOffsetX = [self _horizontalContentOffsetForTargetHorizontalContentOffset:(*targetContentOffset).x velocity:velocity.x]; NSLog( @" " ); NSLog( @"scrollViewWillEndDragging" ); NSLog( @" velocity: %f", velocity.x ); NSLog( @" currentX: %f", scrollView.contentOffset.x ); NSLog( […]

检测UITableView的底部“反弹”

我有一个表视图,当用户在UITableView上向下滚动(按下拇指向上)和不同的animation时,用户执行animation。 问题是当用户到达一个UITableView的底部,它弹跳,表注册一个向上,然后向下移动,从而执行animation,当它不应该。 滚动到顶部时也会发生同样的行为。 不过,我可以像这样检测它: – (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { self.lastContentOffset = scrollView.contentOffset; } -(void) scrollViewDidScroll:(UIScrollView *)scrollView { // Check if we are at the top of the table // This will stop animation when tableview bounces if(self.tableView.contentOffset.y < 0){ // Dont animate, top of tableview bounce } else { CGPoint currentOffset = scrollView.contentOffset; if (currentOffset.y > […]

在iOS 4.0中,为什么UIScrollView zoomToRect:animated:在animation时不触发scrollViewDidScroll或scrollViewDidZoom委托?

我需要密切关注滚动视图的大小,以便根据滚动视图的animation缩放更新内容视图的元素(pipe理多个CALayer的子视图)。 在iOS 3.1上,一切正常,我使用zoomToRect:animated:和animation发生时 , UIScrollViewDelegate的scrollViewDidScroll:消息被重复调用 ,让我根据实际的缩放更新子视图元素。 iOS 4.0上的相同代码并不performance出相同的行为。 当我调用zoomToRect:animated:,委托( scrollViewDidScroll:和scrollViewDidZoom )只被调用一次 ,这使得我的子元素不同步,直到animation完成。 事实上,子元素会立即跳转,然后被缩放animation捕捉,直到所有的东西都在正确的位置。 就好像animation没有在子视图CALayers上进行修改。 我曾尝试用animation块手动animation,但情况是相同的,没有渐进式callback调用。 我也尝试过KVO,但是我不清楚如何使用UIScrollViewpipe理的animation。 在iOS 4中是否有一种解决方法,当UIScrollView缩放比例是dynamic的时候,我可以将缩放值推送到子视图中?