UIRefreshControl选择器没有调用Objective C。

3

UIRefreshControl没有调用它的选择器。这是UITableView的层次结构:

UINavigationController-UITabBarController-UIViewController-UITableView

以下是代码。

refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(handleRefresh:) forControlEvents:UIControlEventValueChanged];
[contestTableView setContentOffset:CGPointMake(0, -self.refreshControl.frame.size.height) animated:YES];
[contestTableView addSubview:refreshControl];
[refreshControl layoutIfNeeded];
[refreshControl beginRefreshing];


-(void)handleRefresh:(id)sender
{
    NSLog (@"Pull To Refresh Method Called");
    [self getDataFromServer];
    [self.refreshControl endRefreshing];
}

刷新控件在下拉UITableview时没有调用handleRefresh函数。请帮忙解决。

added as answer - pavelTerziyski
2个回答

3

尝试从您的代码中将下面这行注释掉。因为您已经在viewDidLoad中触发了刷新操作并且没有使用endRefreshing()将控制返回到其默认状态,所以处理程序handleRefresh:将不会被触发。

[refreshControl beginRefreshing];

beginRefreshing()
告诉控件刷新操作已经以编程方式启动,只有在外部事件源触发滚动视图的程序刷新时才应该调用它。例如,您可以使用定时器定期更新表格视图。


尝试删除上面的行,但现在当下拉表格视图时,刷新控件不可见且没有任何操作执行。 - Tina
可能与您的表视图内容偏移有关。 - Vinaykrishnan
太棒了,点赞! - Vinaykrishnan
你救了我的一天 :) - balkaran singh

0

你需要先添加刷新控件,尝试使用示例代码。

swift:
     if #available(iOS 10.0, *) {
            tableView.refreshControl = refreshControl
        } else {
            tableView.addSubview(refreshControl)
        }


obj-c :

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

它是Swift,要求Objective-C。 - Nirav Hathi
您不需要显式地设置setContentOffset。您需要在哪个方法中放置代码以添加刷新控件? - Nirav Hathi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接