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

Posted

技术标签:

【中文标题】UIViewController中有两个scrollView时如何调用UIScrollView的delegate方法【英文标题】:How to call UIScrollView's delegate method when there are two scrollViews in the UIViewController 【发布时间】:2015-03-06 09:18:01 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

如果您想以不同的方式管理代表,您可以这样做,以scrollViewDidScroll: 方法为例。 通常,委托方法总是将“委托”对象作为参数。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView

    if (scrollView == yourScrollView1)
    
        //Do something
    
    else //if (scrollView == yourScrollView2)
    
        //Do something
    

【讨论】:

你真好。谢谢!【参考方案2】:

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

 - (void)scrollViewDidScroll:(UIScrollView *)scrollView

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

if([self.scrollView1 isEqual:scrollView])

    //Do something here only for scrollview1.

【讨论】:

【参考方案3】:

假设您有两个滚动视图。 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
        
    

干杯。

【讨论】:

以上是关于UIViewController中有两个scrollView时如何调用UIScrollView的delegate方法的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式在两个 UIViewController 之间切换

在两个 UIViewController 堆栈之间转换

一个 UIViewController 中的两个 UICollectionView

错误 UIViewController 没有成员

XCode IOS初学者UIViewController类更改按钮

定位 UIViewController 包含子项