为同一类中的 2 个不同 UIScrollView 设置委托
Posted
技术标签:
【中文标题】为同一类中的 2 个不同 UIScrollView 设置委托【英文标题】:Setup delegates for 2 different UIScrollViews in the same class 【发布时间】:2017-08-24 23:16:07 【问题描述】:我的班级中有一个 UIScrollView 和一个 UITableView(技术上也是一个 UIScrollView)。我将类设为 UIScrollViewDelegate,以便在激活 scrollViewDidScroll 方法时运行一些代码。问题是当滚动视图和 tableView 都滚动时运行此代码,但我不希望出现这种情况。
有什么办法可以将它们分开吗?我在网上查看并试图找到一种方法将滚动视图委托设置为除 self 之外的任何内容,但没有成功。谁能告诉我如何做到这一点或任何其他可能的解决方案?
【问题讨论】:
你可以使用标签 【参考方案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>)
等等,你需要通过example
做一个简单的检查func scrollViewDidScroll(_ scrollView: UIScrollView)
if(scrollView == self.yourTableView)
debugPrint("is tableView")
if(scrollView == self.yourScrollView)
debugPrint("is scrollView")
希望对你有帮助
【讨论】:
谢谢!不敢相信这不是我来的。 欢迎您@MahdiAleali,我很高兴能帮助您,如果不打扰您,请点赞我的回答,谢谢【参考方案2】:当滚动表格视图时,您的 scrollViewDidScroll 被调用,我有点惊讶。
无论如何,您可以使用此限制您的支票
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
if (scrollView == myScrollView)
//this is my scrollview do something cool here
【讨论】:
非常感谢!以上是关于为同一类中的 2 个不同 UIScrollView 设置委托的主要内容,如果未能解决你的问题,请参考以下文章
java问题:请问同一个类中可以有2个名字相同的函数吗?为啥啊?
自定义 uitableviewcell 中的 uiscrollview