【发布时间】:2011-03-09 10:46:13
【问题描述】:
我一直在研究一个分页滚动视图,其中包含几个图像和一个表格视图作为目录。 使用表格我可以跳转到特定页面。除了跳转到页面方法之外,我已经完成了所有工作,当我触摸屏幕时,该方法会将滚动视图带到第一页,除非我滚动到下一页。过去几天一直让我发疯:s
这是我的代码:
-(void)skipToPage {
NSInteger temp = [selectedPage integerValue];
[pagingScrollView setContentOffset:
[self offsetForPageAtIndex:temp] animated:NO];
pagingScrollView.contentSize = [self contentSizeForPagingScrollView];
}
- (CGPoint)offsetForPageAtIndex:(NSUInteger)index {
CGRect pagingScrollViewFrame = [self frameForPagingScrollView];
CGPoint offset;
offset.x = (pagingScrollViewFrame.size.width * index);
offset.y = 0;
return offset;
}
提前谢谢各位!
编辑:scrollviewDidScroll 调用 Tile 页面方法来准备要显示的每个图像
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
[self tilePages];
}
这是来自 Apple 的 photoScroller 示例的方法
- (void)tilePages
{
// Calculate which pages are visible
CGRect visibleBounds = pagingScrollView.bounds;
int firstNeededPageIndex = floorf(CGRectGetMinX(visibleBounds) / CGRectGetWidth(visibleBounds));
int lastNeededPageIndex = floorf((CGRectGetMaxX(visibleBounds)-1) / CGRectGetWidth(visibleBounds));
firstNeededPageIndex = MAX(firstNeededPageIndex, 0);
lastNeededPageIndex = MIN(lastNeededPageIndex, [self imageCount] - 1);
// Recycle no-longer-visible pages
for (ImageScrollView *page in visiblePages) {
if (page.index < firstNeededPageIndex || page.index > lastNeededPageIndex) {
[recycledPages addObject:page];
[page removeFromSuperview];
}
}
[visiblePages minusSet:recycledPages];
// add missing pages
for (int index = firstNeededPageIndex; index <= lastNeededPageIndex; index++) {
if (![self isDisplayingPageForIndex:index]) {
ImageScrollView *page = [self dequeueRecycledPage];
if (page == nil) {
page = [[[ImageScrollView alloc] init] autorelease];
}
[self configurePage:page forIndex:index];
[pagingScrollView addSubview:page];
[visiblePages addObject:page];
}
}
}
【问题讨论】:
-
您检查了
NSInteger temp变量的值吗?也许这总是 0? -
我确实做到了,它是正确的页码!我可以去显示正确的页面,但是当我触摸屏幕时它会滚动到开头。
标签: iphone ios uiscrollview paging