【发布时间】:2014-06-07 19:20:34
【问题描述】:
我的纯 AutoLayout UITableViewCell 在 Interface Builder 中看起来像这样:
UITableViewCell
|-> UITableViewCell.contentView
|-> UIView (ScrollViewContainerView)
|-> UIScrollView
|-> left (fixed)
|-> center (fill remaining)
|-> right (fixed)
UIScrollView 包含 left、center 和 right UIView。 left 和 right 都是固定宽度,而 center 扩展以填充 UIView 的其余部分。 UIScrollView 约束将所有边对齐到ScrollViewContainerView。 ScrollViewContainerView 约束是将所有边与UITableViewCell.contentView 对齐。我将center 的宽度限制为ScrollViewContainerView 宽度的倍数,因此UIScrollView 左右滚动,但高度是固定的并且不滚动。请注意,UIScrollView 已被子类化以包含 this code,以便UITableView 可以检测到单元格上的点击以切换选择。
问题是我目前可以上下滚动包含这些UITableViewCells 的UITableView或者我可以左右滚动UITableViewCells 中的UIScrollViews,不是两者。
ScrollViewContainerView.userInteractionEnabled == YES时,UITableView不能上下滚动,但UIScrollView可以左右滚动。当ScrollViewContainerView.userInteractionEnabled == NO时,我可以上下滚动UITableView,但不能左右滚动UIScrollView。 userInteractionEnabled == YES 用于上述层次结构中的所有其他内容。
我可以将ScrollViewContainerView 作为UIScrollView 的兄弟视图(使UIScrollView 成为contentView 的直接后裔——无法摆脱这一点)。完全查看,因为我需要它来获取UIScrollViewframe) 的尺寸。在这种情况下,与 userInteractionEnabled 的相反处理成立。
我知道我以前在其他项目中也这样做过,但是重新开始,我似乎无法弄清楚我错过了哪一步。目前使用的是针对 iOS 8 的 Xcode 6 6A215l,不过我已经在针对 iOS 7 的 Xcode 5 下重现了这个问题。
【问题讨论】:
-
你用的是什么iOS?我目前正在一个项目中做类似的事情,它适用于 7。我什至能够垂直滚动滚动视图,当我搞砸了垂直约束并且内容大小变得大于高度框架时。
-
@Levi 我以前的项目针对 iOS 7 并且有效。我现在正在 iOS 8 上重新实现它。
-
哇哇哇!为什么在 tableview 单元格中使用滚动视图?
-
您能否尝试在 iOS 7 设备上运行它并告诉我它的运行情况?因为如果因为操作系统版本而这不起作用,我也会遇到问题
-
@LordZsolt 您将如何显示需要水平布局并超过单元格宽度的内容?
标签: ios uitableview uiscrollview autolayout