今天刚开始用"UIRefreshControl“,注意到了一些奇怪的事情。
如果我在InterfaceBuilder中创建了UIRefreshControl,并将其全部连接起来,我的选择器永远不会被调用。IB说控件应该触发"value changed“消息,并且应该调用我的代码,但是从来没有这样做过。
因此,我放弃了在Interface Builder中这样做,而只是决定在代码中这样做。行数不是太多。所以我把这段代码放在我的"viewDidLoad“例程中:
self.refreshControl = [UIRefreshControl new];
[self.refreshControl addTarget:self action:@selector(doStuff:) forControlEvents:UIControlEventValueChanged];
NSMutableParagraphStyle* paragraphStyle = [NSMutableParagraphStyle new];
paragraphStyle.alignment = NSTextAlignmentCenter;
self.refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"Pull to refresh" attributes:@{NSParagraphStyleAttributeName : paragraphStyle}];它绘制得很好,但是当视图第一次出现时,刷新控件是可见的。我更希望在用户真正拉下桌子之前它是不可见的。我调用了一个web服务,等待结果返回,然后填充表。因此,您只能看到一两秒钟的控件。但它看起来很奇怪。
所以,问题是:
发布于 2013-04-03 23:59:54
您不需要添加刷新控件,也不需要在viewController中声明刷新控件。添加pull-to-refresh是一个两步过程。
步骤1:在你的故事板中,进入你的tableViewController,在上面写着“正在刷新”的地方,选择“启用”。
步骤2:将以下代码添加到viewDidLoad中的tableViewController.m文件中:
[self.refreshControl addTarget:self
action:@selector(refresh)
forControlEvents:UIControlEventValueChanged];这就是整个过程,除了在-refresh方法中做一些事情之外。没什么好说的了。
发布于 2013-06-24 15:35:21
是的,UIRefreshControl存在一个永远不会调用该操作的错误。基思·哈里森在他的博客UIRefreshControl Fun and Games中谈到了这一点
使用调试器进行调查似乎从未调用过刷新方法。我只能假设,由于某些原因,故事板没有正确地将UIRefreshControl连接到我们的操作,或者正在与UIControlEventValueChanged事件进行一些其他奇怪的交互。我已经向苹果公司(rdar://14178445)提交了一份错误报告,但你也可以使用一个简单的变通办法。
解决方法如@AMayes所述。
https://stackoverflow.com/questions/15206205
复制相似问题