当UIViewController中有两个scrollView时,如何调用UIScrollView的委托方法

时间:2015-03-06 09:18:02

标签: ios objective-c uiview uiscrollview uiscrollviewdelegate

当UIViewController中有两个scrollView时,如何调用UIScrollView的委托方法,这使得它只能在其中一个scrollView上运行而不会影响另一个?

3 个答案:

答案 0 :(得分:2)

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

如果您想以不同的方式管理代表,可以使用scrollViewDidScroll:方法的示例来执行您的操作。 通常,委托方法总是作为参数提供"委托"对象

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

答案 1 :(得分:1)

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

 - (void)scrollViewDidScroll:(UIScrollView *)scrollView

因此,使用传递的参考作出决定:

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

答案 2 :(得分:1)

假设您有两个滚动视图。 scrollA scrollB 。为它们设置标签

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

干杯。