iOS UITableViewController甚至在顶部显示一个小滚动显示UIRefreshControl

问题描述:

我面对一个非常奇怪的问题与我的UITableViewController的tableview。在iOS 9.2中测试iOS UITableViewController甚至在顶部显示一个小滚动显示UIRefreshControl

我已经为故事板中的UITableViewController启用了“刷新”,并将它附加到了valueChanged的IBAction中。请注意,tableview具有使用“Plain”样式和自定义高度45的区段标题。

问题是,通常您会期望拉下tableview相当多的量以触发刷新控制并开始旋转。

但是,在我的情况下,即使只是一小部分的滚动,刷新控制显示并开始旋转。像字面上2厘米,这将使其出现。即使我甚至没有拉动足够的桌面视图来触发刷新,它甚至会奇怪地自动扩展高度。

还要注意,即使它开始完全旋转并自动结束旋转,但我的方法在IBAction中为刷新控件链接,实际上并未触发。

例如,我慢慢向上滚动,一旦我即将到达顶部,刷新控件就会显示并向下移动桌面视图,开始旋转,停止旋转。所有这些都不需要拉动桌面就可观。

请注意,在我的代码中,我根本没有“beginRefreshing”。此外,我没有任何“scrollViewDidScroll”或“scrollViewDidDrag”等方法来触发刷新控制。

我从来没有见过这类问题。

由于其他原因,我无法将自定义ViewController与自定义TableView一起使用,因此需要修复此问题。

任何帮助将不胜感激!

我能够通过删除应用程序,并清理和重建后重新安装它来解决它。非常奇怪的问题,我花了很多时间,但现在它已经修复了!

您可以通过编程添加UIRefreshControl,它将正常工作。举个简单的例子,其中UIRefreshControl不是IBOutlet(没包括的tableView数据源的方法):

#import "ViewController.h" 

@interface ViewController() <UITableViewDataSource> 
@property (weak, nonatomic) IBOutlet UITableView *tableView; 
@property (strong, nonatomic) UIRefreshControl *refreshControl; 
@end 

@implementation ViewController 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    self.refreshControl = [[UIRefreshControl alloc] init]; 
    self.refreshControl.backgroundColor = [UIColor lightGrayColor]; 
    [self.refreshControl addTarget:self action:@selector(actionRefresh:) forControlEvents:UIControlEventValueChanged]; 
    [self.tableView addSubview:self.refreshControl]; 
} 

- (void)actionRefresh:(id)sender { 
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 
     [self.refreshControl endRefreshing]; 
    }); 
} 

// ...UITableView dataSource methods 

@end 
+0

我实际上有过这种方式,并有同样的问题。所以我决定切换到故事板启用“刷新”,并删除了代码,仍然是同一问题:( –

+0

这里是一个测试项目,只是在答案相同的代码,并且它工作正常。https://www.dropbox。 com/sh/jka44ujmintnh5x/AABDtzyW3GO0Al9PuoNtrFlea?dl = 0 – shpasta

+0

我不怀疑你的代码无法正常工作,我有其他的tableviewccontrollers工作正常,只有这个是它没有的地方 –