Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 分页uiscrollview自动滚动到第一页_Iphone_Ios_Uiscrollview_Paging - Fatal编程技术网

Iphone 分页uiscrollview自动滚动到第一页

Iphone 分页uiscrollview自动滚动到第一页,iphone,ios,uiscrollview,paging,Iphone,Ios,Uiscrollview,Paging,我一直在开发一个页面滚动视图,其中包含多个图像和一个作为内容表的tableview。 使用该表,我可以跳转到特定页面。除了跳转到页面的方法外,我的一切都正常工作。当我触摸屏幕时,滚动视图会转到第一页,除非我滚动到下一页。这几天我都快发疯了:s 这是我的密码: -(void)skipToPage { NSInteger temp = [selectedPage integerValue]; [pagingScrollView setContentOffset:

我一直在开发一个页面滚动视图,其中包含多个图像和一个作为内容表的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 page方法,该方法准备要显示的每个图像

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    [self tilePages];   
}
这是一种来自苹果公司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];
        }
    }

}
-(无效)瓷砖路面板
{
//计算哪些页面是可见的
CGRect visibleBounds=pagingScrollView.bounds;
int firstneedpageindex=floorf(CGRectGetMinX(visibleBounds)/CGRectGetWidth(visibleBounds));
int lastNeedPageIndex=floorf((CGRectGetMaxX(visibleBounds)-1)/CGRectGetWidth(visibleBounds));
firstNeedPageIndex=MAX(firstNeedPageIndex,0);
LastNeedPageIndex=MIN(LastNeedPageIndex[自映像计数]-1);
//回收不再可见的页面
用于(可视页面中的ImageScrollView*页面){
如果(page.indexlastneedpageindex){
[recycledPages添加对象:页面];
[page removeFromSuperview];
}
}
[visiblePages minusSet:recycledPages];
//添加缺少的页面

对于(int index=firstneedpageindex;index我不能完全确定您描述的问题是什么。因此,我对您看到的问题的理解是:

  • 单击表格视图时,您正在调用SkipTopPage消息,正确设置滚动视图的内容偏移量,并显示正确的页面

  • 点击视图时,它会跳转到第一页

如果你能澄清这句话,可能会有帮助:

除了跳转到页面方法 当我触摸屏幕时,会显示 将视图滚动到第一页,除非我 滚动到下一页

  • 当你“触摸屏幕”时,应用程序的状态是什么
  • 您是否正在触摸表视图,然后调用SkipTopPage
  • tableview是第一页上scrollview的子视图吗
假设这就是正在发生的事情(如果我遗漏了什么,请纠正我)。你能在下面的消息(和邮编)中检查一下你在做什么吗

如果您正在调整这些消息中的内容偏移量,您可能会从滚动视图中获得意外行为。

我让它工作了

该问题是由导航控制器引起的,导航控制器与PhotoScroller示例应用程序反应不好!要解决此问题,请将scrollview设置为标准UIView的子视图,如:

UIView *view = [[UIView alloc] initWithFrame:pagingScrollViewFrame];
    [view addSubview:pagingScrollView];

    self.view = view;

谢谢:)

您是否检查了
NSInteger temp
变量的值?可能这始终是0?我确实检查了,而且它是正确的页码!我可以转到并显示正确的页面,但当我触摸屏幕时,它会滚动到开头。感谢您的回答。是的,我正在从tableview调用SkipTopPage,它是一个单独的viewcontr当滚动视图显示时,我在正确的页面上,但当我触摸屏幕时(滚动除外)它会移到第一页。@Ahmed所以当你点击屏幕而不是拖动滚动视图时?拖动滚动视图是有效的,但点击会跳转到第一页?没错!我编辑了我的问题以包含我使用的代码。我没有使用DidendDecelling委托方法。@Ahmed看起来你没有在视图中设置内容偏移量idscroll.你在为图像视图上的触摸事件做任何事情吗?这正是困扰我的问题!我只在SkipTopPage方法中设置内容偏移量。触摸事件只显示/隐藏顶部栏。正如我所说,如果我滚动所有内容,即使触摸事件也可以正常工作。我猜它来自SkipTopPage。很高兴你解决了这个问题。一个n请注意此代码。您正在此处分配UIView对象(保留计数1),然后将其分配给保留属性(保留计数2),因此在释放控制器时将出现内存泄漏。您需要使此UIView自动释放。:)啊内存管理:)我仍然有问题。谢谢提示!
UIView *view = [[UIView alloc] initWithFrame:pagingScrollViewFrame];
    [view addSubview:pagingScrollView];

    self.view = view;