我的纯 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
或者 我可以滚动 UIScrollViews
在 UITableViewCells
左侧和右侧,不是两者。
当 ScrollViewContainerView.userInteractionEnabled == YES
时,我无法上下滚动 UITableView
,但可以左右滚动 UIScrollView。当 ScrollViewContainerView.userInteractionEnabled == NO
时,我可以上下滚动 UITableView
,但无法左右滚动 UIScrollView。 userInteractionEnabled == YES
对上述层次结构中的所有其他内容。
我可以将 ScrollViewContainerView
作为 UIScrollView
的兄弟 View (使 UIScrollView
contentView
的直接下降——无法完全摆脱这个 View ,因为我需要它来获取 UIScrollView
frame
的尺寸) .在这种情况下,与 userInteractionEnabled
的相反处理成立。
我知道我以前在其他项目中做过这个,但重新开始,我似乎无法弄清楚我错过了哪一步。目前使用的是针对 iOS 8 的 Xcode 6 6A215l,尽管我已经在针对 iOS 7 的 Xcode 5 下重现了这个问题。
最佳答案
听起来 ScrollView 导致您的表格 View 在滚动时不允许用户交互。我敢肯定,如果您在 UIScrollView 委托(delegate)中调用 - (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView
(iOS 8 不确定),但您可以这样做
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView {
if(scrollView.dragging == YES) {
self.<scrollViewName>.userInteractionEnabled = NO;
}
}
这是未经测试的代码,但它只是帮助您到达需要去的地方。
希望对您有所帮助!
关于ios - 无法同时滚动 UITableViewCell 中的 UIScrollView 和 UITableView 本身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24100763/