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】:假设您有两个滚动视图。 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
干杯。
【讨论】:
以上是关于UIViewController中有两个scrollView时如何调用UIScrollView的delegate方法的主要内容,如果未能解决你的问题,请参考以下文章
以编程方式在两个 UIViewController 之间切换
一个 UIViewController 中的两个 UICollectionView