UIRefreshControl 有条件地为 ios 5 及更低版本声明

Posted

技术标签:

【中文标题】UIRefreshControl 有条件地为 ios 5 及更低版本声明【英文标题】:UIRefreshControl conditionally declare for ios 5 and below 【发布时间】:2012-10-16 15:06:09 【问题描述】:

我正在使用UIRefreshControl 下拉刷新 ios 6,它正在工作。我正在使用自定义委托在完成时进行更新,在我调用的那个方法中,

[self->refresh endRefreshing];

我已经声明了,

UIRefreshControl *refresh;

在接口文件中,因为我无法调用

[self->refresh endRefreshing] 

来自自定义委托方法。

这一切都适用于 iOS 6,但在较低版本的 iOS 上,它会失败,因为 `UIRefreshControl' 仅适用于 iOS 6 及更高版本。

我如何有条件地声明它们以便它在 iOS6 及更低版本上都可以使用?

【问题讨论】:

【参考方案1】:
    将实例变量声明为id。 在使用时将变量转换为UIRefreshControl *。 在您使用它的地方周围,使用if (NSClassFromString(@"UIRefreshControl") != Nil) ... 确保UIRefreshControl 可用。

【讨论】:

Jesper,谢谢你的回复,我试过了。这是我尝试的错误代码pastebin.com/ZGXXu5Hh 你必须使用 iOS 6 SDK。 Jasper,Base sdk 设置为 ios 6,但仍然出现同样的错误。【参考方案2】:

或者使用 [[UIDevice currentDevice] systemVersion] 和自定义拉取刷新,例如这个:https://github.com/leah/PullToRefresh

【讨论】:

【参考方案3】:

https://github.com/instructure/CKRefreshControl 是 UIRefreshControl 的直接替代品,它在 iOS6+ 上使用 UIRefreshControl,在以前的版本上使用自定义的下拉刷新逻辑。我与它的开发没有任何关系,但它工作得很好!

【讨论】:

以上是关于UIRefreshControl 有条件地为 ios 5 及更低版本声明的主要内容,如果未能解决你的问题,请参考以下文章

iOS - Storyboard 使用 UIRefreshControl 下拉刷新

完全禁用 UIRefreshControl - iOS

临时显示其他选项卡时 UIRefreshControl 冻结(iOS 7)

iOS UIRefreshControl 在单视图应用程序中,没有表

UIRefreshControl 未在 iOS 10 以下显示带有 DialogViewController 的 Xamarin

UIRefreshControl 刷新后不隐藏。 iOS