在同一个类中为2个不同的UIScrollView设置委托

时间:2017-08-24 23:16:07

标签: ios uitableview uiscrollview delegates

我班上有一个UIScrollView和一个UITableView(技术上也是一个UIScrollView)。我使类成为UIScrollViewDelegate,因此在激活scrollViewDidScroll方法时会运行一些代码。问题是当滚动视图和tableView都滚动时运行此代码,但我不希望如此。

有什么方法可以将它们分开吗?我在网上看了一下,试图找到一种方法将滚动视图委托设置为除了自己以外的任何东西,但没有成功。任何人都可以告诉我如何做到这一点或任何其他可能解决这个问题的方法吗?

2 个答案:

答案 0 :(得分:1)

您可以检查哪个对象正在调用委托方法,UIScrollViewDelegate上的所有方法都将对象作为参数ej传递:

func scrollViewDidScroll(_ scrollView: UIScrollView)
func scrollViewDidZoom(_ scrollView: UIScrollView)
func scrollViewWillBeginDragging(_ scrollView: UIScrollView)
func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>)

等等,您需要通过示例

进行简单检查
func scrollViewDidScroll(_ scrollView: UIScrollView)
{ 
   if(scrollView == self.yourTableView)
   {
     debugPrint("is tableView")
   }

   if(scrollView == self.yourScrollView)
   {
     debugPrint("is scrollView")
   }
}

希望这有帮助

答案 1 :(得分:1)

我很惊讶滚动tableview时调用了scrollViewDidScroll。

无论如何,您可以使用此

来限制支票
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {

    if (scrollView == myScrollView) {
    //this is my scrollview do something cool here
   }
}