我的类中有一个UIScrollView和一个UITableView(技术上也是UIScrollView(。我使该类成为UIScrollViewDelegate,因此当激活scrollViewDidScroll方法时,它将运行一些代码。问题是当滚动视图和表视图都滚动时,会运行此代码,但我不希望这种情况发生。
有什么方法可以将它们分开吗?我在网上查找并试图找到一种方法将滚动视图委托设置为除 self 以外的任何内容,但没有成功。谁能告诉我如何做到这一点或这个问题的任何其他可能的解决方案?
你可以检查哪个对象正在调用委托方法,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")
}
}
希望这有帮助
我有点惊讶你的scrollViewDidScroll在滚动表视图时被调用。
无论如何,您可以使用此限制您的检查
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
if (scrollView == myScrollView) {
//this is my scrollview do something cool here
}
}