将 UIScrollView 放在 CollectionViewCell 上,但滚动视图无法滚动
Posted
技术标签:
【中文标题】将 UIScrollView 放在 CollectionViewCell 上,但滚动视图无法滚动【英文标题】:put UIScrollView on a CollectionViewCell but the scrollview can not scroll 【发布时间】:2015-05-28 07:24:43 【问题描述】:我将UIScrollView
放在CollectionViewCell
上,但scrollview
无法滚动
#import <UIKit/UIKit.h>
@interface MyCollectionViewCell : UICollectionViewCell<UIScrollViewDelegate>
IBOutlet UIScrollView *toolsScrollView;
@end
@implementation MyCollectionViewCell
- (id)initWithFrame:(CGRect)frame
self = [super initWithFrame:frame];
if (self)
// Initialization code
//wangzheng
self = [super initWithFrame:frame];
if (self)
NSArray *nibView = [[NSBundle mainBundle] loadNibNamed:@"MyCollectionViewCell"owner:self options:nil];
UIView *bw = [nibView objectAtIndex:0] ;
[self.contentView addSubview:bw];
toolsScrollView.delegate=self;
UIView *toolView1 = [[UIView alloc] init];
toolView1.backgroundColor = [UIColor blackColor];
toolView1.frame = CGRectMake(300, 0, 80, 150);
[toolsScrollView addSubview:toolView1];
toolsScrollView.delegate=self;
[toolsScrollView setContentSize:CGSizeMake(400 * 2, toolsScrollView.frame.size.height)];
toolsScrollView.showsVerticalScrollIndicator = NO;
toolsScrollView.showsHorizontalScrollIndicator = NO;
toolsScrollView.delegate = self;
toolsScrollView.userInteractionEnabled=true;
toolsScrollView.scrollEnabled=true;
return self;
return self;
IBOutlet UIScrollView *toolsScrollView
链接到 XIB 中的 UIScrollView
滚动视图不能滚动,函数scrollViewDidScroll
永远不会被触发
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
return;
【问题讨论】:
collectionView 不会从 scrollView 窃取触摸事件吗? UICollectionViewCell 是 UIView 的子类 你的collectionView中有相关代码吗? 【参考方案1】:可能的问题:
-
toolsScrollView 变量未连接且未指向有效的滚动视图,或者,
从 nib 加载后,toolsScrollView 的框架不正确。或者,
3.它实际上在滚动但不可见,因此出于测试目的启用了以下 -
toolsScrollView.showsVerticalScrollIndicator = YES;
toolsScrollView.showsHorizontalScrollIndicator = YES;
【讨论】:
以上是关于将 UIScrollView 放在 CollectionViewCell 上,但滚动视图无法滚动的主要内容,如果未能解决你的问题,请参考以下文章
将 UICollectionView 和 UITableView 放在 iOS 的 UIScrollView 中是一种好习惯吗?
UIScrollView + 在滚动屏幕之前将项目固定到顶部