UIViewController中有两个scrollView时如何调用UIScrollView的delegate方法

How to call UIScrollView's delegate method when there are two scrollViews in the UIViewController

当UIViewController中有两个scrollView时,如何调用UIScrollView的delegate方法,使其只作用于一个scrollView而不会影响另一个?

iOS 中的所有委托方法始终传递调用对象的引用,例如:

 - (void)scrollViewDidScroll:(UIScrollView *)scrollView

所以使用传递的参考来做决定:

if([self.scrollView1 isEqual:scrollView])
{
    //Do something here only for scrollview1.
}

假设您有两个滚动视图。 scrollAscrollB。为他们两个设置标签

scrollA.tag=1;
scrollB.tag=2;

并将委托设置为两者,在委托调用中像这样处理它

- (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
        }
    }

干杯。

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

如果你想用不同的方式管理代表,这里是你可以做的,以 scrollViewDidScroll: 方法为例。 通常,委托方法总是将 "delegated" 对象作为参数。

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