当UIViewController中有两个滚动视图时,如何调用UIScrollView的委托方法



当UIViewController中有两个scrollView时,我如何调用UIScrollView的委托方法,使其只在其中一个scrollViews上工作,而不会影响另一个?

由于您的问题不太清楚,如果您只想管理其中一个UIScrollViewDelegate,请不要设置不需要的scrollView2.delegate

如果您想以不同的方式管理委托,以下是您可以做的,以scrollViewDidScroll:方法为例。通常,delegates方法总是将"delegated"对象作为参数。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if (scrollView == yourScrollView1)
    {
        //Do something
    }
    else //if (scrollView == yourScrollView2)
    {
        //Do something
    }
}

iOS中的所有委托方法总是传递调用对象的引用,如:

 - (void)scrollViewDidScroll:(UIScrollView *)scrollView

因此,使用传递的参考进行决策:

if([self.scrollView1 isEqual:scrollView])
{
    //Do something here only for scrollview1.
}
假设您有两个滚动视图滚动A滚动B。为两者设置标签
scrollA.tag=1;
scrollB.tag=2;

并将delegate设置为两者,在delegate调用中将其处理为

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
    if(scrollView.tag=1){
         //do something
    }else if(scrollView.tag=2){
    }
}

如果你不想使用标签,你可以很容易地做像

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
        if(scrollView==scrollA){
             //do something
        }else if(scrollView==scrollB){
            //do something
        }
    }

干杯。

最新更新