我有一个分页UIScrollView,可以浏览多个全屏图像。在基于Apple示例代码的滚动视图页面浏览图像集时,我正在平铺页面,对UIViews进行动态排队和出列。
我有一个工具栏按钮,调用scrollRectToVisible:animated:将UIScrollView移动到特定图像。这非常有效。
问题在于,如果您在UIScrollView中单击一下,它会在触摸按钮之前滚动回显示的页面,并且scrollRectToVisible:animated:方法调用滚动视图。
如果您的触控移动,UIScrollView会按预期滚动,后续触摸不会导致UIScrollView移回原始页面。
如何防止此行为?
由于
JK
答案 0 :(得分:12)
您需要使用内容偏移而不是scrollRectToVisible,例如:
[pagingScrollView setContentOffset:[self offsetForPageAtIndex:page] animated:YES];
其中offsetForPageAtIndex如下所示:
- (CGPoint)offsetForPageAtIndex:(NSUInteger)index {
CGRect pagingScrollViewFrame = [self frameForPagingScrollView];
CGPoint offset;
offset.x = (pagingScrollViewFrame.size.width * index);
offset.y = 0;
return offset;
}
这是基于WWDC 2010的Apple“photoscroller”示例代码,它具有如下所示的frameForPagingScrollView:
- (CGRect)frameForPagingScrollView {
CGRect frame = [[UIScreen mainScreen] bounds];
frame.origin.x -= PADDING;
frame.size.width += (2 * PADDING);
return frame;
}
该版本的Photoscroller示例代码的完整副本位于:
答案 1 :(得分:3)
虽然约瑟夫的答案以正确的方式告诉我,但旋转设备时我有一些奇怪的行为。我发现使用offset.x = (pagingScrollView.bounds.size.width * index);
代替效果更好。