为什么UITableView调用UIScrollView的委托方法?

时间:2012-07-10 10:09:39

标签: iphone objective-c ios uitableview

我有一个应用程序,其中UITableView内有一个UIView,它再次位于UIScrollView内,因此层次结构如下:

UIScrollView - > UIView - > UITableView

我的UITableView内的数据已正确填写。

现在,我的问题在于,当我滚动UITableView时,UIScrollView's委托方法scrollViewDidEndDecelerating:scrollViewDidEndDragging::会被调用。

我不想要这种行为,我该怎么做才能阻止这种行为?

任何人请帮助, 提前谢谢!!!

2 个答案:

答案 0 :(得分:8)

UITableViewDelegate扩展了UIScrollViewDelegate。因此调用委托方法。

要停止此操作,您可以在分配tableView时设置tableView.tag = 1000;,并在UIScrollViewDelegate方法(scrollViewDidEndDecelerating: and scrollViewDidEndDragging::)中添加以下内容:

if(scrollView.tag == 1000)
    return;

答案 1 :(得分:3)

因为UITableView继承自UIScrollView。所以它显示了UIScrollView的所有属性和行为。如果你不想要这个,请做一件事。

假设您的页面中有另一个滚动视图。

viewDidLoadXIB(如果你在XIB中有你的桌面视图),请为你的tableview设置一个标签。

代码,

self.objYourTableView.tag = 101;

然后在滚动视图委托

- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
  {
       if(!(scrollView.tag == 101))
       {
          // Go for your code to run.
       }
  }

如果表视图调用了代码,那么代码将跳过。其他情况下它完美无缺。希望这会对你有所帮助。