iOS中的Pull to Refresh Jump

当我慢慢下拉刷新时,我看到UIActivityIndi​​cator圈在开始刷新之前慢慢变得更加完整。 在圆圈完成并且刷新实际触发之前,内容跳跃/猛然下降然后圆圈开始旋转。 我慢慢拉下来时才注意到这一点。

我正在使用pull来刷新名为mainSV的滚动视图

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

为什么会发生这种跳跃/混蛋?

这可能是iOS中的一个错误。 你的设置是正确的,我在我的应用程序中看到了同样的事情。

我怀疑跳跃/混蛋是由于“双重”动作造成的。

Xcode 5发布后, refresh实现发生了变化。

因此,不再需要如Apple文档中所述设置目标操作。

在使用Storyboard时,在Interface Builder / Storyboard文件中,选择故事板场景(表视图控制器)。

在属性检查器中,在子视图表视图控制器下 ,选择“刷新”项,并将设置从“已禁用”更改为“已启用”。

表视图控制器的属性检查器

删除或注释掉您在问题中包含的三行代码。 (当需要时,即在Xcode 5之前,我将此代码放在我的viewDidLoad TVC生命周期方法中。)

如果没有自动插入您的代码,那么将其添加为公共或私人IBAction

 - (IBAction)refresh:(UIRefreshControl *)sender; 

并将您的场景/表视图控制器连接到已发送事件 “值已更改”。

出口连接的视觉表示

确保您的刷新操作已正确配置…

 - (IBAction)refresh:(UIRefreshControl *)sender { [self.refreshControl beginRefreshing]; // Refresh code for your TVC [self.refreshControl endRefreshing]; } 

请注意,不需要为refreshControl设置任何属性 – 我怀疑当您在故事板中选择TVC属性中的Refreshing [Enabled]设置时,会触发自动合成此属性。

如果您需要在代码中调用刷新,请使用此行…

 [self refresh:self.refreshControl]; 

我需要查看其余代码(或至少是滚动+刷新方法)来诊断问题。

这是我们在objective-c和swift中实现自定义pull to refresh控件的教程。 如果您遵循本教程,您不应该看到任何跳跃或抽搐。

http://www.jackrabbitmobile.com/design/ios-custom-pull-to-refresh-control/

希望能帮助到你!