UICollectionViewCell 内的 UIScrollView 不滚动

Posted

技术标签:

【中文标题】UICollectionViewCell 内的 UIScrollView 不滚动【英文标题】:UIScrollView inside UICollectionViewCell not scrolling 【发布时间】:2015-07-14 20:29:17 【问题描述】:

我正在像这样设置UICollectionViewCell

    self.background = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, self.contentView.frame.size.width, self.contentView.frame.size.height)];
    self.background.userInteractionEnabled = YES;
    self.background.scrollEnabled = YES;
    self.background.showsVerticalScrollIndicator = YES;

    // configure image
    self.image = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.contentView.frame.size.width, self.background.frame.size.height)];

    [self.background addSubview:self.image];

    // configure title
    self.title = [[UILabel alloc] initWithFrame:CGRectMake(5, 10, self.contentView.frame.size.width-10, 70)];
    [self.background addSubview:self.title];

    // configure description
    self.description = [[UILabel alloc] initWithFrame:CGRectMake(5, 80, self.contentView.frame.size.width-10, 20)];
    [self.background addSubview:self.description];

    self.textView = [[UIWebView alloc] initWithFrame:CGRectMake(0, self.image.frame.size.height+10, self.contentView.frame.size.width, 40)];
    self.textView.delegate = self;
    NSString *content = [NSString stringWithFormat:@"<html><head></head><body id='foo'>%@</body></html>", @"<p>kbafdj akdjfnadf jhadkfb ij daofhu adofh oj afoduuh oiad fohfd ouhadf dj aodfhj ah adlfk ohad ofladjhfl aojadf oadfh oadhf adfladf adfoadf oadfh aodfh a oadf aodf  afdjladf oad jladfl aodf alf d  adjfladf   adfj aldfkajdfljad aodfj adlfj ad aldjf adlfj al adfjadlfa d adf adf ad pajdf aldjf adkh pfbd fpqehf qehf qepd af pqif phhf q piiqihpsdhvpvqohro pdh wpvhqf lorem ipsum dfkbshbs k bfjsv ohfakdjb </p>"];
    NSString *path = [[NSBundle mainBundle] bundlePath];
    NSURL *baseURL = [NSURL fileURLWithPath:path];
    [_textView loadHTMLString:content baseURL:baseURL];
    [self.background addSubview:_textView];

    [self addSubview:self.background];
    [self sendSubviewToBack:self.background];
    [self.background setContentSize:CGSizeMake(self.contentView.frame.size.width, 2*self.contentView.frame.size.height)];

UICollectionView 具有水平滚动的全屏UICollectionViewCells。 UICollectionView上还有一个UIGestureRecognizer

self.pinchRecognizer =
[[UIPinchGestureRecognizer alloc] initWithTarget:self                                    action:@selector(closeCell:)];
self.pinchRecognizer.delegate = self;
[_collectionView addGestureRecognizer:self.pinchRecognizer];

现在,UIScrollView 不起作用。我不明白出了什么问题,所以如果有人可以在这里帮助我,那就太好了。我做错了什么?

【问题讨论】:

你看过 UIGestureRecognizerDelegate 吗? 【参考方案1】:

原来问题在于我将UIScrollView 发送到UICollectionViewCell 的后面。删除 [self sendSubviewToBack:self.background]; 解决了这个问题。

【讨论】:

【参考方案2】:

UIWebView 子视图可能正在处理平移手势。尝试在 webview 上禁用触摸交互。

【讨论】:

不幸的是,这不是问题:(

以上是关于UICollectionViewCell 内的 UIScrollView 不滚动的主要内容,如果未能解决你的问题,请参考以下文章

UICollectionViewCell 内的圆形 ImageView

UICollectionViewCell 内的 UIImageView 中的角半径

从 uiviewcontroller 操作 uicollectionviewcell 内的 uicollectionview

在 UICollectionViewCell 内的 UICollectionView 中平滑滚动

uiCollectionViewCell 内的 Uitableview

Swift - 从 UICollectionViewCell 内的视图中删除约束