由于种种原因,我决定在我的应用中使用UIScrollView而不是UITableView。当我使用UITableView时,我能够添加UIRefreshControl,没有任何问题。但是,当我在UIScrollView上使用相同的代码时,没有任何反应。我已经尝试了几个第三方进修库,似乎都没有。任何帮助表示赞赏。
来源:
var scroll: UIScrollView!
var refreshControl: UIRefreshControl!
override func viewDidLoad()
{
super.viewDidLoad()
self.scroll = UIScrollView(frame: self.view.frame)
self.scroll.contentSize = CGSize(width: self.view.bounds.width, height: 10)
self.refreshControl = UIRefreshControl()
self.refreshControl.attributedTitle = NSAttributedString(string: "Pull to refresh")
//self.refreshControl.addTarget(self, action: "loadPostsIntoCards", forControlEvents: UIControlEvents.ValueChanged)
self.scroll.addSubview(self.refreshControl)
self.view.addSubview(self.scroll)
//self.loadPostsIntoCards()
}
loadPostsIntoCards
方法执行我的API调用,并创建添加到UIScrollView的UIViews(" cards")。然后,我根据所有卡的总高度更改UIScrollView的contentSize。卡片添加完美,滚动视图按预期运行,但UIRefreshControl除外。
提前感谢您的帮助!
答案 0 :(得分:15)
修改强>
在一些鬼混之后,我发现另一个解决方案,即使当contentSize小于scrollView高度时,滚动视图也会滚动(并触发刷新控件)。只需将alwaysBounceVertical属性设置为true:
self.scroll.alwaysBounceVertical = true
老人的回答:self.scroll.contentSize = CGSize(width: self.view.bounds.width, height: 10)
要:
self.scroll.contentSize = CGSize(width: self.view.bounds.width, height: self.view.bounds.height+1)
这将允许您的RefreshControl启动。
或者,在您的情况下,您应该计算卡片的高度,然后将其设置为contentSize的高度。