UIScrollView使用下一个和上一个按钮操作

时间:2010-12-14 07:09:04

标签: iphone objective-c

我是iphone的新手,我使用的是水平滚动视图,这些都是水平滚动的   但我希望这些水平滚动上一个和下一个按钮动作。请尽快帮助我。

感谢:)

6 个答案:

答案 0 :(得分:1)

以下是为我工作的步骤

<。>在.h文件中编写以下代码。

int scrollMove; 
UIScrollView *aScrView;

-(IBAction)nextBtnAction:(id)sender;
-(IBAction)previousBtnAction:(id)sender;
<。>文件中的

- (void)viewDidLoad
{
[super viewDidLoad];

scrollMove=50;

aScrView=[[UIScrollView alloc]init];
aScrView.frame=CGRectMake(25,50, 270, 50);
aScrView.delegate=self;
aScrView.contentSize=CGSizeMake(1200, 0);

[self.view addSubview:aScrView];


// Do any additional setup after loading the view from its nib.
}


-(IBAction)nextBtnAction:(id)sender{

 float coordinate = 2.0f;
 //scrollMove=50;
 [aScrView setContentOffset:CGPointMake(scrollMove * coordinate, 0) animated:YES];
 scrollMove=scrollMove+50;



 }
-(IBAction)previousBtnAction:(id)sender{
float coordinate = 1.0f;


[aScrView setContentOffset:CGPointMake(scrollMove * coordinate, 0) animated:YES];
scrollMove=scrollMove-50;
}

希望这可以帮助你!!!

答案 1 :(得分:0)

如果要继续滚动视图的下一个可见内容,请使用此选项:

(把这个放在下一个按钮方法中)

float coordinate = 2.0f;
[nodeScrollView setContentOffset:CGPointMake(460 * coordinate, 0) animated:YES];

继续前一个可见内容视图:

float coordinate = 1.0f;

[nodeScrollView setContentOffset:CGPointMake(460 * coordinate, 0) animated:YES];

(把这个放在上一个按钮方法中)

* *您需要使用坐标

进行一些数学计算

答案 2 :(得分:0)

CGRect frame = scrollView.frame;
frame.origin.x = frame.size.width * pageNumberYouWantToGoTo;
frame.origin.y = 0;
[scrollView scrollRectToVisible:frame animated:YES];

答案 3 :(得分:0)

- (void)viewDidLoad
{
    x=0;
    y=320;
}

- (IBAction)next:(id)sender 

{
    y=320;
    [scrl_Knot setContentOffset:CGPointMake(x+320,0) animated:YES];
    x+=320;

}

- (IBAction)pre:(id)sender 

{

    x=0;
    [scrl_Knot setContentOffset:CGPointMake(y,0) animated:YES];
    y-=320;

}

答案 4 :(得分:0)

- (IBAction)pre:(id)sender
{
    btnNext.enabled = TRUE;
    imageID--;
    [scrl_venuelist setContentOffset:CGPointMake(imageID*273, 0) animated:YES];
    pagecontrol.currentPage=imageID;
    if(imageID <= 0)
    {
        btnPrevious.enabled = FALSE;
    }
}
- (IBAction)next:(id)sender
{
    btnPrevious.enabled = TRUE;
    imageID++;
    [scrl_venuelist setContentOffset:CGPointMake(imageID*273, 0) animated:YES];
    pagecontrol.currentPage=imageID;
    if(imageID >= imageArr.count-1)
    {
        btnNext.enabled = FALSE;
    }
}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView; 
{
    imageID = scrollView.contentOffset.x / scrollView.frame.size.width; 
    pagecontrol.currentPage=imageID;

    if(imageID <= 0)
    {
        btnPrevious.enabled = FALSE;
        imageID = 0;
    }
    else
    {
        btnPrevious.enabled = TRUE;
    }

    if(imageID >= imageArr.count-1)
    {
        btnNext.enabled = FALSE;
        imageID = imageArr.count-1;
    }
    else
    {
        btnNext.enabled = TRUE; 
    }
}

- (void)viewDidLoad
{
    scrl_venuelist.delegate=self;
    scrl_venuelist.contentSize =CGSizeMake(273 * [imageArr count], 137);
    if(imageID == 0)
    {
        btnPrevious.enabled = FALSE;
        if(imageID == imageArr.count-1)
        {
            btnNext.enabled = FALSE;
        }
    }
    else if(imageID == imageArr.count-1)
    {
        btnNext.enabled = FALSE;
    }
    else if(imageID > imageArr.count-1)
    {
        imageID = [imageArr count]-1;
    }
    scrl_venuelist.pagingEnabled=YES;
    pagecontrol.numberOfPages=[imageArr count];
    pagecontrol.currentPage=0;
}

答案 5 :(得分:0)

如果有人正在寻找使用Xamarin的C#方法

    public int CurrentIndex
    {
        get => (int)Math.Round(this.scrollView.ContentOffset.X / this.scrollView.Frame.Width);
        set => this.scrollView.ScrollRectToVisible(new CGRect(new CGPoint(this.scrollView.Frame.Size.Width * value, 0), this.scrollView.Frame.Size), true);
    }

此getter和Setter应该会为您提供当前页面,并让您滚动到指定页面

按钮操作只需将当前索引更新为新值即可,当前索引可能为+ 1 / -1。