
如下图所示,主视图是UIScrollVIEw。那么里面应该有一个UIPageVIEw,每一页的PageVIEw都应该有一个UItableVIEw。
到目前为止我已经做了这一切。但是我的问题是我希望滚动自然地行动。
接下来是我自然的意思。当我在其中一个UItableVIEw上滚动时,它会滚动tablevIEw(而不是scrollvIEw)。但是我希望它滚动ScrollVIEw,除非scrollvIEw不能滚动,因为它到达其顶部或底部(在这种情况下,我希望滚动表视图)。
例如,假设我的滚动视图当前滚动到顶部。然后我把手指放在桌面上(当前页面显示)并开始向下滚动。我这种情况下,我想要滚动浏览(没有tablevIEw)。如果我继续滚动我的滚动视图,它到达底部,如果我从显示屏上移除我的手指,并将其放回teblevIEw并再次向下滚动,我希望我的表视图向下滚动,因为scrollvIEw到底部,它不是能够保持滚动。
你们有没有关于如何实现这个滚动的想法?
我真的迷失了这个。任何帮助将非常感谢它:(
谢谢!
同时处理滚动视图和表视图的解决方案围绕着uiscrollviewdelegate。因此,您的视图控制器是否符合该协议:class VIEwController: UIVIEwController,uiscrollviewdelegate { 我将代表滚动视图和表视图作为出口:
@IBOutlet weak var scrollVIEw: UIScrollVIEw!@IBOutlet weak var tableVIEw: UItableVIEw!
我们还需要跟踪滚动视图内容的高度以及屏幕高度。你会明白为什么以后。
let screenHeight = UIScreen.mainScreen().bounds.heightlet scrollVIEwContentHeight = 1200 as CGfloat
vIEwDIDLoad ::需要一些配置
overrIDe func vIEwDIDLoad() { super.vIEwDIDLoad() scrollVIEw.contentSize = CGSizeMake(scrollVIEwContentWIDth,scrollVIEwContentHeight) scrollVIEw.delegate = self tableVIEw.delegate = self scrollVIEw.bounces = false tableVIEw.bounces = false tableVIEw.scrollEnabled = false} 在那里我已经关闭d跳来保持简单。关键设置是滚动视图和表视图的代理,并且首先使表视图滚动关闭。
这些是必要的,以便scrollVIEwDIDScroll:delegate方法可以处理到达滚动视图的底部并到达表视图的顶部。这是那个方法:
func scrollVIEwDIDScroll(scrollVIEw: UIScrollVIEw) { let yOffset = scrollVIEw.contentOffset.y if scrollVIEw == self.scrollVIEw { if yOffset >= scrollVIEwContentHeight - screenHeight { scrollVIEw.scrollEnabled = false tableVIEw.scrollEnabled = true } } if scrollVIEw == self.tableVIEw { if yOffset <= 0 { self.scrollVIEw.scrollEnabled = true self.tableVIEw.scrollEnabled = false } }} 委托方法正在检测滚动视图何时到达底部。当发生这种情况时,表视图可以滚动。它也会检测表视图到达顶部的哪个滚动视图被重新启用。
我创建了一个GIF来展示结果:
总结以上是内存溢出为你收集整理的swift – 如何使ScrollView中的TableView滚动自然全部内容,希望文章能够帮你解决swift – 如何使ScrollView中的TableView滚动自然所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)