【发布时间】:2012-03-11 04:12:48
【问题描述】:
我正在尝试在 iOS 5 中使用新的 scrollViewWillEndDragging:withVelocity:targetContentOffset: 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( @" uikit targetX: %f", (*targetContentOffset).x );
NSLog( @" pagedX: %f", goodOffsetX );
targetContentOffset->x = goodOffsetX;
}
【问题讨论】:
-
您是否在此滚动视图中将
pagingEnabled设置为YES? -
pagingEnabled 设置为 NO,文档说它需要设置为 NO 才能调用此委托。我还尝试将其设置为 YES 只是为了踢球,它没有按照文档被调用,但是有一些控制台日志记录说不要在 pagingEnabled 设置为 YES 的情况下执行此操作。
-
我的问题是我在运行 iOS4 的手机上测试它。另外,您是否设置了 UIScrollView 的委托属性?
-
它不需要其他委托方法,你说得对,pagingEnabled 必须为 NO。您确定此代码不起作用吗?您没有提到真正的测试是什么:在 didScroll 委托方法中,您应该 NSLog contentOffset 那里。触发此方法后,查看 contentOffset 是否与您记录为 pagedX 的那个不一致。
标签: ios uiscrollview uikit uiscrollviewdelegate