【问题标题】:UIRefreshControl in Landscape横向 UIRefreshControl
【发布时间】:2012-09-24 12:20:58
【问题描述】:

我的表格顶部有一个 UIRefreshControl。

屏幕是横向的。

问题是,我不能拉得足够远来触发刷新,因为横向空间太小了。有没有办法调整你必须下拉的量?

【问题讨论】:

  • 对发现此问题的根本原因非常感兴趣。无法在 OS X 10.8.2 上的 Xcode 4.5 中重现
  • 我的app有一个导航栏,还有一个UISearchBar在表格的顶部,所以拉的空间比较小
  • 如果您只有一个导航栏和一个搜索栏,那么就足够公平了,听起来这应该可以按预期工作。邮件应用程序有搜索栏和导航栏,在那里工作正常,你的屏幕上还有什么?
  • 你是怎么做到的?你改变了什么属性
  • UIRefreshControl 不支持 UIScrollView 之前的 iOS 10。使用refreshControl 时漂移消失。参见SO 29791995GitHub SO-29791995 演示

标签: iphone objective-c ios uirefreshcontrol


【解决方案1】:

你可以通过改变UITableView的高度来调整你必须拉的距离。 UIRefreshControl 根据 tableView 的高度按比例调整其最大扭曲高度。如果您无法更改 tableView 的高度,请file a bug 提供您的具体情况,希望在未来的 iOS 版本中解决。

另外,你有没有试过更快地拉下来?

【讨论】:

  • 调整 tableview 的高度似乎完全没有效果。
  • @cannyboy 这很有趣。请提交带有详细信息的错误。谢谢! :)
  • 是的tableview高度没有改变“与tableView高度成比例的最大扭曲高度”,我提交了一个错误
  • @ugiflezet 没有属性; UIRefreshControl 应该考虑到这一点。您提交的错误编号是多少?
  • @DaveDeLong 是的,我知道没有暴露这样的字段 :),错误 ID:12630914,我还附上了一个小项目来演示这个问题
【解决方案2】:

请记住,您的 tableview 只是 UIScrollView 的子类。在您的控制器中,实现 scrollViewDidScroll 方法并在您的 UIRefreshControl 上调用 -beginRefreshing,如下所示。

但是 UIRefreshControl 的动画在进入刷新状态时不会像你期望的那样流畅。但它有效。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if (scrollView.contentOffset.y < -98 && ![self.refresher isRefreshing]) {
        [self.refresher beginRefreshing];
        //do all the work
        [self.refresher endRefreshing];
    }
}

【讨论】:

【解决方案3】:

如果您的contentsize的高度不足以下拉,您可能需要使用self.collectionView.alwaysBounceVertical = YES;启用其垂直

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-10
    • 1970-01-01
    • 1970-01-01
    • 2018-05-20
    • 1970-01-01
    • 2012-07-24
    • 1970-01-01
    相关资源
    最近更新 更多