带有 UIControl/UIButton 子视图的 ScrollView/TableView 在 iOS 8 下不可滚动

Posted

技术标签:

【中文标题】带有 UIControl/UIButton 子视图的 ScrollView/TableView 在 iOS 8 下不可滚动【英文标题】:ScrollView/TableView with UIControl/UIButton subviews not scrollable under iOS 8 【发布时间】:2014-09-24 04:28:35 【问题描述】:

我有一个 UIScrollView 实例 (scrollview),以及许多 UIControl 实例作为子视图放置在滚动视图上。在 ios 8 之前一切正常,但 scrollview 现在在 iOS 8 下无法滚动。

似乎 UIControl 实例吃掉了触摸事件,而 scrollviewdelaysContentTouches 在 iOS 8 下被破坏了。


刚发现UITableView也有这个问题。

【问题讨论】:

【参考方案1】:

搜索了一段时间,解决了这个问题

scrollview.panGestureRecognizer.delaysTouchesBegan = YES;

还有另一种解决方法(但我没有幸运地尝试过,导致 UIControl 实例不起作用,如果您对此有任何想法,请告诉我,谢谢):

if (floor((NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_7_1)) 
    UITapGestureRecognizer * nothingTap = [[UITapGestureRecognizer alloc] init];
    [nothingTap setDelaysTouchesBegan:YES];
    [scrollView addGestureRecognizer:nothingTap];

【讨论】:

以上是关于带有 UIControl/UIButton 子视图的 ScrollView/TableView 在 iOS 8 下不可滚动的主要内容,如果未能解决你的问题,请参考以下文章

带有子视图的自动布局 NSCollectionView

带有子视图的动态宽度视图

iOS - 带有表格视图和子视图的选项卡式应用程序

移动带有子视图的 UIView

带有详细子视图的警告消息?

带有 Marionette 视图的主干模式 - 子视图事件没有被触发