当UIViewController中有两个scrollView时,我如何调用UIScrollView的委托方法,使其只在其中一个scrollViews上工作,而不会影响另一个?
由于您的问题不太清楚,如果您只想管理其中一个UIScrollViewDelegate
,请不要设置不需要的scrollView2.delegate
。
如果您想以不同的方式管理委托,以下是您可以做的,以scrollViewDidScroll:
方法为例。通常,delegates方法总是将"delegated"对象作为参数。
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if (scrollView == yourScrollView1)
{
//Do something
}
else //if (scrollView == yourScrollView2)
{
//Do something
}
}
iOS中的所有委托方法总是传递调用对象的引用,如:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
因此,使用传递的参考进行决策:
if([self.scrollView1 isEqual:scrollView])
{
//Do something here only for scrollview1.
}
scrollA.tag=1;
scrollB.tag=2;
并将delegate设置为两者,在delegate调用中将其处理为
- (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
}
}
干杯。