【问题标题】:Scrolling in UITableView embedded in UITableviewCell (ios7)在 UITableviewCell (ios7) 中嵌入的 UITableView 中滚动
【发布时间】:2014-04-04 10:02:55
【问题描述】:

我已将 UITableView 添加为 UITableviewCell 的子视图。 在 iOS 6 中,当我滚动内部 tableView 并到达它的末尾时,主表视图变为滚动。 在 iOS 7 中,它不再工作了。如果我在内部表格视图中滚动,它不会将此滚动事件传递给父 tableView。

有谁知道如何简单地修复它,而无需手动将事件从内部 tableview 传输到父级?

附加信息: 我找到了problem 的可能原因。但是如何解决这个问题。

【问题讨论】:

  • 你为什么要这样做?不建议在 TableViewCell 中添加 TableView。
  • 我需要显示不适合单元格大小的内容。
  • 你试过用 UICollectionView 代替 UITableView 吗?
  • 我必须支持 iOS 5。:)
  • @FaisalAli,为什么不推荐?你有没有这样说的 Apple 文档?

标签: ios ios7 uitableview


【解决方案1】:

所以,我找到了解决办法。

根据@FaisalAli 的提示,我实现了委托方法:

- (BOOL)                         gestureRecognizer: (UIGestureRecognizer*)gestureRecognizer
shouldRecognizeSimultaneouslyWithGestureRecognizer: (UIGestureRecognizer*)otherGestureRecognizer
{
    if ([gestureRecognizer isKindOfClass: [UIPanGestureRecognizer class]])
    {
        if ([((UIPanGestureRecognizer*)gestureRecognizer) velocityInView: self].y > 0)
        {
            // Up
            if (self.contentOffset.y <= 0)
            {
                self.bounces = NO;
                return YES;
            }
        }
        else
        {
            // Down
            if (self.contentOffset.y + self.height >= self.contentSize.height)
            {
                self.bounces = NO;
                return YES;
            }
        }
    }

    self.bounces = YES;

    return NO;
}

它有帮助。

【讨论】:

  • 如果有人没有得到它:您嵌入的 tableview 实例必须实现 shouldRecognizeSimultaneouslyWithGestureRecognizer。你可以从上面复制代码来计算返回值,或者你可以直接返回 !(self.contentOffset.y > 0)。希望对任何人都有帮助。
【解决方案2】:

我认为这对于用户的易用性而言不是明智的解决方案。你应该使用Master-Detail Strategy

UINavigationController设置为rootViewController,然后推送你的MasterTableViewController,在选择每个单元格时,你可以推送新的TableViewController,其中包含所选单元格项目的详细数据。

编辑

如果你真的想在 TableViewCell 中添加 TableView,请关注 link 1link 2

【讨论】:

  • 即使您对 MVC 一致性的看法是绝对正确的,嵌套的 UITableViews 也是一种可接受的设计模式。它确实增加了编码器的内存开销和性能优化,但如果处理得当,会产生一些非常好的结果。
  • 在 TableViewCell 中处理 TableView 的委托和数据源都不是小菜一碟... :) 我认为使用我的策略会降低复杂性。
  • @abagmut 我已根据您的要求编辑了我的答案。如果有帮助,请查看它。
  • 您对复杂性的看法是正确的,但一个好的应用程序是为用户提供最佳用户体验的应用程序,无论编码人员的制作难度如何。
  • @FaisalAli 我已经查看了您提供的链接,但根据我的问题没有发现任何有用的东西(写这篇文章时没有 ios 7)。明确一点,在 ios6 上一切正常,问题只出现在 ios7 上。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
相关资源
最近更新 更多