我一直在处理一个分页滚动视图,其中有几个图像和一个tableview作为内容表。 使用该表我可以跳转到特定页面。除了跳转到页面方法之外,我已经完成了所有工作,当我触摸屏幕时将滚动视图带到第一页,除非我滚动到下一页。在过去的几天里,它一直让我疯狂: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;
}
先谢谢你们!
编辑:scrolviewDidScroll调用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];
}
}
}
答案 0 :(得分:2)
我搞定了!
问题是由导航控制器引起的,该控制器与PhotoScroller示例应用程序反应不佳!解决它使scrollview成为标准UIView的子视图,如:
UIView *view = [[UIView alloc] initWithFrame:pagingScrollViewFrame];
[view addSubview:pagingScrollView];
self.view = view;
谢谢:)
答案 1 :(得分:0)
我不完全确定你所描述的问题是什么。所以我对你所看到的问题有所了解:
当您点击表格视图时,您正在调用 skipToPage 消息,正确设置滚动视图的内容偏移量并显示正确的页面?
当您点按视图时,它会跳转到第一页?
如果你能澄清这句话可能会有所帮助:
除了跳转到页面方法之外 当我触摸屏幕带来的时候 滚动视图到第一页除非我 滚动到下一页。
所以假设这是正在发生的事情(如果我错过了什么,请纠正我)。你可以在以下消息(和邮政编码)中查看你在做什么:
(void)scrollViewDidScroll:(UIScrollView *)sender;
(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;
如果您正在调整这些消息中的内容偏移量,则可能会从滚动视图中获得意外行为。