BSRefreshableScrollView 1.0.1

BSRefreshableScrollView 1.0.1

测试已测试
语言语言 Objective-CObjective C
许可证 BSD
发布最后发布2014年12月

Unclaimed维护。




RefreshableScrollView

一个 NSScrollView 子类,支持顶部和底部边界的下拉刷新。预期的用法是托管类似时间线视图,显示按逆时间顺序排列的消息列表。

入门

RefreshableScrollView.xcodeproj 添加到您的 OS X 项目中,并将 libRefreshableScrollView.a 作为项目依赖项添加到项目。另外,将公共头文件 BSRefreshableScrollView.h 添加到项目的用户头文件搜索路径中。

尝试使用附带示例应用程序,以查看类是如何工作的以及如何使用它。上面的视频演示显示了该示例应用程序的录制。

如何使用

BSRefreshableScrollView 用作 NSScrollView 的替代项。如果您使用 Xcode 的界面构建器添加 NSTableViewNSOutlineView(以及其他一些)的实例,默认情况下,它将在这些对象周围包含一个 NSScrollView。突出显示该 NSScrollView 容器,转到对象身份检查器,并输入 BSRefreshableScrollView 作为滚动视图的类名。

然后您需要编写一个符合 BSRefreshableScrollViewDelegate 协议的代理。这很可能是 xib 文件的文件所有者 - 一个视图控制器或窗口控制器。将该代理类连接到滚动视图的 refreshableDelegate 端口。

在代理的 awakeFromNib 方法中,设置哪些边支持下拉刷新。这很重要 - 如果不启用这些标志,则 BSRefreshableScrollView 将表现得像普通的 NSScrollView。如果您不使用 xib 文件,则需要找到一个适当的位置来设置这些标志。请注意,您可以清除这些标志中的任何一个以禁用相应边界的刷新,即使视图已经可见。

-(void)awakeFromNib
{
    [super awakeFromNib];
    self.refreshableScrollView.refreshableSides = BSRefreshableScrollViewSideTop | BSRefreshableScrollViewSideBottom;
}

在代理中实现方法 scrollView: startRefreshSide: 以启动刷新过程,如果该过程成功启动,则返回 YES。滚动视图将在适当的边缘显示一个不确定的进度指示器。如果由于某些原因您无法启动该侧的刷新,则简单地返回 NO,并且滚动视图将表现得像什么都没有发生一样。

#pragma mark BSRefreshableScrollViewDelegate

-(BOOL) scrollView:(BSRefreshableScrollView*) aScrollView startRefreshSide:(BSRefreshableScrollViewSide) refreshableSide
{
    if (refreshableSide == BSRefreshableScrollViewSideTop) {
        // initiate refresh process for the top edge of the scroll view
        // ...
        return YES; // tell the scroll view to display the progress indicator
    } else if (refreshableSide == BSRefreshableScrollViewSideBottom) {
        // initiate refresh process for the bottom edge of the scroll view
        // ...
        return YES; 
    }
    return NO;
}

当刷新过程完成(即网络服务返回结果或超时)时,调用 stopRefreshingSide: 并给它适当的边界来停止。如果没有在该方向上进行刷新,则调用此方法将没有任何效果。例如

- (IBAction)stopRefreshTop:(id)sender
{
    [self.refreshableScrollView stopRefreshingSide:BSRefreshableScrollViewSideTop];
}

许可证

本项目采用BSD许可证。如果您用它来做一些有趣的事情,请告诉我([email protected])。

Sasmito Adibowo http://cutecoder.org