将 UIRefreshControl 添加到 UIScrollView

Posted

技术标签:

【中文标题】将 UIRefreshControl 添加到 UIScrollView【英文标题】:Adding UIRefreshControl to UIScrollView 【发布时间】:2015-10-14 15:36:35 【问题描述】:

我只是想简单地将 UIRefreshControl 添加到 UIScrollview - 出于某种原因,当我拉下滚动条时,什么也没有发生。没有ActivityView,没有动作。它只是像什么都没发生一样反弹回来。

这是我目前所拥有的:

- (void)viewDidLoad 
[super viewDidLoad];

[scroller setAutoresizesSubviews:YES];

UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(handleRefresh:) forControlEvents:UIControlEventValueChanged];
[self.scroller addSubview:refreshControl];

//populate the scroller with data
[self grabData];



-(void)handleRefresh:(UIRefreshControl *)refresh 
// Reload my data
[self grabData];

【问题讨论】:

scroller 和 self.scroller 是否附加到界面构建器中的同一个滚动视图? 是的,它们已附加 可以展示一下类的界面吗? 【参考方案1】:

这个应该有用

UIRefreshControl *refreshControl;

- (void)viewDidLoad 
  [super viewDidLoad];

  refreshControl = [[UIRefreshControl alloc]init];
  [self.scrollView addSubview:refreshControl];
  [refreshControl addTarget:self action:@selector(refreshData) forControlEvents:UIControlEventValueChanged]; 



- (void)refreshData 
  //TODO: reload your data and end refreshing
  [refreshControl endRefreshing];

如果您正在获取一些数据,在您完成接收数据后,您应该致电endRefreshingreloadData

【讨论】:

【参考方案2】:

对我有用的是让 refreshControl 成为类的变量,然后使用它。

例如:

class className: UIViewController
    var refreshControl:UIRefreshControl!
    override func viewDidLoad() 
        super.viewDidLoad()
        self.refreshControl = UIRefreshControl()
        self.refreshControl.addTarget(self, action: Selector("getPrint"), forControlEvents: UIControlEvents.ValueChanged)
        refreshControl.tintColor = UIColor.whiteColor()
        self.refreshControl.backgroundColor = UIColor.clearColor()
        self.refreshControl?.endRefreshing()
        self.scrollView.addSubview(self.refreshControl)
    

【讨论】:

以上是关于将 UIRefreshControl 添加到 UIScrollView的主要内容,如果未能解决你的问题,请参考以下文章

类似于 UIRefreshControl 将隐藏的 UIView 添加到 UITableView

UIRefreshControl 默认添加奇怪的插图

将 UIRefreshControl 所需的路径更改为 UIControlEventValueChanged

有水平的 UIRefreshControl 吗?

如何添加 UIRefreshControl

用于“上拉”刷新的 UIRefreshControl?