触摸某些元素时 UIScrollView 不滚动
Posted
技术标签:
【中文标题】触摸某些元素时 UIScrollView 不滚动【英文标题】:UIScrollView not scrolling when touching some elements 【发布时间】:2014-10-23 13:53:53 【问题描述】:我有一个带有 Autolayout 的 UIScrollView,上面有几个元素。问题是当我尝试滚动触摸某些元素时没有任何反应,但是当我尝试滚动触摸其他一些元素时,滚动效果很好。
UIScrollView 有几个 UIViews,里面有 UITextfields 和 UIButtons。
似乎触摸事件或滚动事件并没有被发送到父 UIScrollView,而只是针对某些视图。
有什么想法吗?
【问题讨论】:
请发截图或一些代码 为什么不用UITableView
而不是UIScrollView
?在这种情况下,您无需担心滚动。
【参考方案1】:
UIScrollView
有一个方法-(BOOL)touchesShouldCancelInContentView:(UIView *)view
,如果视图不是UIControl
对象,默认返回YES;否则,它返回 NO。因此,如果您想在触摸UIControl
对象时启用滚动,您应该从UIScrollView
继承并覆盖touchesShouldCancelInContentView:
以始终返回YES:
@interface MYScrollView : UIScrollView
@end
@implementation MYScrollView
- (BOOL)touchesShouldCancelInContentView:(UIView *)view
return YES;
@end
【讨论】:
确实,我的朋友,在视图层次结构中的某个地方有一个不是 UIControl 的视图并且禁用了滚动。 UIScrollView 的子类化解决了这个问题!以上是关于触摸某些元素时 UIScrollView 不滚动的主要内容,如果未能解决你的问题,请参考以下文章