繁体   English   中英

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

[英]Why UITableView calls UIScrollView's delegate methods?

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

UIScrollView - > UIView - > UITableView

我的UITableView的数据已正确填充。

现在,我的问题是,当我滚动我的UITableViewUIScrollView's委托方法scrollViewDidEndDecelerating:scrollViewDidEndDragging::被调用。

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

任何人请帮助,谢谢!

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

要停止此操作,您可以设置tableView.tag = 1000; 当你scrollViewDidEndDecelerating: and scrollViewDidEndDragging:: tableView并在UIScrollViewDelegate方法( scrollViewDidEndDecelerating: and scrollViewDidEndDragging:: ,在最开始时添加:

if(scrollView.tag == 1000)
    return;

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

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

viewDidLoadXIB (如果你在XIB有你的tableview),为你的tableview设置一个标签。

在代码中,

self.objYourTableView.tag = 101;

然后在滚动视图委托中

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM