当UIViewController中有两个scrollView时,如何调用UIScrollView的委托方法,这使得它只能在其中一个scrollView上运行而不会影响另一个?
答案 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
}
}
干杯。