【问题标题】:Issue with ScrollView setcontentoffsetScrollView setcontentoffset 的问题
【发布时间】:2025-12-08 11:20:02
【问题描述】:

当视图像这样在屏幕外时,我正在向滚动视图添加页面(视图)

-(void)loadScrollView:(NSInteger)CurrentPage
{
    int pageNo=objGameData.CurrentPageNo-1;
    [self.EDDescriptionScrollView setContentOffset:CGPointMake((pageNo*EDDescriptionScrollView.frame.size.width)+80, EDDescriptionScrollView.frame.size.height)];

    self.EDDescriptionScrollView.contentSize=CGSizeMake(EDDescriptionScrollView.frame.size.width*objGameData.CurrentPageNo,EDDescriptionScrollView.frame.size.height);




    edView=[[EDView alloc]initWithFrame:CGRectMake((CurrentPage-1)*EDDescriptionScrollView.frame.size.width, 0, EDDescriptionScrollView.frame.size.width, EDDescriptionScrollView.frame.size.height)];

    [edView.EDMsgTextView setText:[NSString stringWithFormat:@"%@",[self.EDDescrptionArray objectAtIndex:(CurrentPage-1)]]];
    edView.EDMsgTextView.delegate=self;
    edView.backgroundColor=[UIColor clearColor];
    edView.CorrectWordLbl.text=self.CurrentWord;
    edView.TotalPointsLost.text=[NSString stringWithFormat:@"Points : %d",objGameData.CurrentPointsLostEarned];
    edView.tag=pageNo;
    [self.EDDescriptionScrollView addSubview:edView];
}

现在,当我在屏幕上移动 EDDescriptionScrollView 的超级视图并想跳转到添加的最后一个页面以外的某个页面时,我只是这样做

 [self.EDDescriptionScrollView setContentOffset:CGPointMake((pageNo*EDDescriptionScrollView.frame.size.width)+80, EDDescriptionScrollView.frame.size.height)];

它将滚动视图带到页面,但内容仅在我触摸屏幕时显示。 我在做什么是错的? 我也试过调用layoutsubview,问题依旧。

【问题讨论】:

  • 你为什么不使用方法 scrollRectToVisible:animated:?

标签: iphone ios objective-c uiscrollview


【解决方案1】:

尝试拨打[self.EDDescriptionScrollView layoutIfNeeded]

【讨论】:

    【解决方案2】:

    [self.EDDescriptionScrollView setContentOffset:CGPointMake((pageNo*EDDescriptionScrollView.frame.size.width)+80, EDDescriptionScrollView.frame.size.height)]; “pageNo”应该是“pageNo - 1”

    【讨论】: