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的高度.
| 归档时间: |
|
| 查看次数: |
3315 次 |
| 最近记录: |