ios - 无法同时滚动 UITableViewCell 中的 UIScrollView 和 UITableView 本身

标签 ios uitableview uiscrollview autolayout

我的纯 AutoLayout UITableViewCell 在 Interface Builder 中看起来像这样:

UITableViewCell
|-> UITableViewCell.contentView
    |-> UIView (ScrollViewContainerView)
        |-> UIScrollView
            |-> left (fixed)
            |-> center (fill remaining)
            |-> right (fixed)

UIScrollView 包含一个leftcenterright UIViewleftright 都是固定宽度,而 center 扩展以填充 UIView 的剩余部分。 UIScrollView 约束是将所有边缘与 ScrollViewContainerView 对齐。 ScrollViewContainerView 约束是将所有边缘与 UITableViewCell.contentView 对齐。我将 center 的宽度限制为 ScrollViewContainerView 宽度的倍数,因此 UIScrollView 左右滚动,但是高度是固定的,不会滚动。请注意,UIScrollView 已被子类化以包含 this code这样 UITableView 就可以检测到单元格上的点击以切换选择。

问题是我目前可以上下滚动包含这些 UITableViewCellsUITableView 或者 我可以滚动 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/

相关文章:

ios - UIScrollView:无限滚动显示斐波那契数

ios - NSString NSArray 与最后两项之间的 "and"连接字符串

ios - 如何将 nil 类型传递给 Swift 中的参数?

ios - UITableViewCell setSelected :animated having no effect when animated

Swift - UITableViewCell 标签位置在滚动后移动

ios - 执行 segue 时 View 出现两次

android - 经过验证的 cordova 应用程序可以验证应用程序内的 Web View 吗?

ios - 导航栏中的标题太长

ios - 在 ScrollView 中按下时居中元素

ios - 将 Storyboard View 中的所有内容移动到 ScrollView 中