首页 > 解决方案 > 在目标 C 中点击下一个和上一个按钮时,ScrollView 无法正确移动

问题描述

-(IBAction)nextButtonTapped:(id)sender {
    if (moreItemsgridView.contentOffset.x<=moreItemsgridView.contentSize.width) {
        CGRect frame;
        frame.origin.x = moreItemsgridView.contentOffset.x + moreItemsgridView.frame.size.width;
        frame.origin.y = 0;
        frame.size  = moreItemsgridView.frame.size;
        [moreItemsgridView scrollRectToVisible:frame animated:YES];
        //[moreItemsgridView setContentOffset:CGPointMake(moreItemsgridView.contentOffset.x + moreItemsgridView.contentSize.width, 0) animated:NO];
    }
}

-(IBAction)previousButtonTapped:(id)sender {
    if (moreItemsgridView.contentOffset.x>=moreItemsgridView.frame.size.width) {
        CGRect frame;
        frame.origin.x = moreItemsgridView.contentOffset.x - moreItemsgridView.frame.size.width;
        frame.origin.y = 0;
        frame.size = moreItemsgridView.frame.size;
        [moreItemsgridView scrollRectToVisible:frame animated:YES];
    }
}

当我点击下一个按钮时,我的图像正确滚动,但是当我单击上一个按钮时,它会正确滚动,但最后它只显示一半的视图......我做错了什么......请帮助我......

标签: iosobjective-cuiscrollviewdelegate

解决方案


[self.view layoutIfNeeded];更新框架后调用 。

-(IBAction)nextButtonTapped:(id)sender {
    if (moreItemsgridView.contentOffset.x<=moreItemsgridView.contentSize.width) {
        CGRect frame;
        frame.origin.x = moreItemsgridView.contentOffset.x + moreItemsgridView.frame.size.width;
        frame.origin.y = 0;
        frame.size  = moreItemsgridView.frame.size;
        [moreItemsgridView scrollRectToVisible:frame animated:YES];
        //[moreItemsgridView setContentOffset:CGPointMake(moreItemsgridView.contentOffset.x + moreItemsgridView.contentSize.width, 0) animated:NO];


 [self.view layoutIfNeeded]

    }
}

-(IBAction)previousButtonTapped:(id)sender {
    if (moreItemsgridView.contentOffset.x>=moreItemsgridView.frame.size.width) {
        CGRect frame;
        frame.origin.x = moreItemsgridView.contentOffset.x - moreItemsgridView.frame.size.width;
        frame.origin.y = 0;
        frame.size = moreItemsgridView.frame.size;
        [moreItemsgridView scrollRectToVisible:frame animated:YES];


        [self.view layoutIfNeeded]
    }
}

推荐阅读