如何缩短拉动距离以激活iOS 6/7中的拉动刷新操作?

Dan*_*hez 13 uiwebview uitableview ios uirefreshcontrol

嘿StackOverflow人,

我一直试图找出这个问题已经有一段时间了,但无济于事,我需要一些帮助.我有一个UITableView接近我的应用程序的底部,并没有足够的屏幕距离供用户参与刷新.有没有人知道如何缩短激活拉动刷新动作所需的距离(通过UIRefreshControliOS 6/7中的a)UITableViewUIWebView

在此先感谢大家!

Ash*_*rat 32

您仍然可以使用refreshControl,但需要进行一些修改!

将这些代码添加到viewController:

var canRefresh = true

override func scrollViewDidScroll(scrollView: UIScrollView) {

    if scrollView.contentOffset.y < -100 { //change 100 to whatever you want

        if canRefresh && !self.refreshControl.refreshing {

            self.canRefresh = false
            self.refreshControl.beginRefreshing()

            self.refresh() // your viewController refresh function
        }
    }else if scrollView.contentOffset.y >= 0 { 

        self.canRefresh = true
    }
}
Run Code Online (Sandbox Code Playgroud)

和往常一样,在self.refresh()函数的刷新逻辑结束时添加:

   self.refreshControl.endRefreshing()
Run Code Online (Sandbox Code Playgroud)

  • 太棒了! (2认同)

sta*_*Man 11

根据Apple Docs,我没有看到任何修改UIRefreshControl参数的方法.
链接:https://developer.apple.com/library/ios/documentation/uikit/reference/UIRefreshControl_class/Reference/Reference.html

使用第三方组件像ODRefreshControl(自定义,以激活刷新,修改滚动距离常数). #define kMaxDistance

要么...

不要UIRefreshControl-scrollViewDidScroll方法中使用和改为实现自己的逻辑,如:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if ((scrollView.contentOffset.y + scrollView.frame.size.height) >= scrollView.contentSize.height) {
        //refresh logic
    }
}
Run Code Online (Sandbox Code Playgroud)

  • @DanielSanchez aah,在`ODRefreshControl.m`中修改`#define kMaxDistance 53`参数.我想这会有所帮助 (2认同)
  • 你先生是个天才!非常感谢!我相信这是任何试图做我正在做的事情的人的解决方案.我刚刚使用[ODRefreshControl](https://github.com/Sephiroth87/ODRefreshControl)并修改了`#define kMaxDistance 53`常量以获得我想要的输出.哇噢! (2认同)