从未显示添加到UIScrollView的UIRefreshControl

Con*_*cks 10 uiscrollview ios uirefreshcontrol swift

我决定在我的应用程序中使用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()
}
Run Code Online (Sandbox Code Playgroud)

loadPostsIntoCards方法执行我的API调用,并创建添加到UIScrollView的UIViews("cards").然后,我根据所有卡的总高度更改UIScrollView的contentSize.卡片添加完美,滚动视图按预期运行,但UIRefreshControl除外.

在此先感谢您的帮助!

don*_*als 15

编辑:
经过一番愚弄后,我找到了另一个解决方案,即使当contentSize小于scrollView高度时,它也允许滚动视图滚动(并触发刷新控件).只需将alwaysBounceVertical属性设置为true即可:

self.scroll.alwaysBounceVertical = true
Run Code Online (Sandbox Code Playgroud)

旧答案:
您的内容大小应大于滚动视图的高度,以使其工作.改变这一行:

self.scroll.contentSize = CGSize(width: self.view.bounds.width, height: 10)
Run Code Online (Sandbox Code Playgroud)

至:

self.scroll.contentSize = CGSize(width: self.view.bounds.width, height: self.view.bounds.height+1)
Run Code Online (Sandbox Code Playgroud)

这将允许您的RefreshControl启动.

或者,在您的情况下,您应该计算卡片的高度,然后将其设置为contentSize的高度.