第一个屏幕上不可见的单元格不可点击

Posted

技术标签:

【中文标题】第一个屏幕上不可见的单元格不可点击【英文标题】:Cells not visible on first screen are not tappable 【发布时间】:2017-02-06 13:04:54 【问题描述】:

我使用了 UIScroll 视图。它有一个 contentView(UIView 类型),它又有一个 questionView (UIView) 和一个 _questionTableView (UITableView)。我知道这不是正确的做法,但设计要求我这样实现。 Scroll 运行良好。

我总共有 8 个单元格,第一次打开屏幕时只有 4 个单元格可见。在点击这 4 个单元格中的任何一个时

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 

被调用。

向下滚动时,其余单元格变为可见。但点击它们不会触发 didSelectRowAtIndexPath

我阅读了有关此问题的各种堆栈溢出帖子(以启用对单元格的点击),其中人们建议增加内容视图大小/滚动视图的内容大小/表格视图的高度。我尝试了所有方法,但没有成功。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
MyCell *cell = [tableView dequeueReusableCellWithIdentifier:@"myCell"];
_scrollView.contentSize = CGSizeMake(_questionTableView.frame.size.width, 1000);
_contentView.frame = CGRectMake(0, 0, _questionTableView.frame.size.width * 2, 1000);
_questionTableView.frame = CGRectMake(0, 0, _qTableView.frame.size.width , 500);
self.scrollView.delegate = self;
return cell;

有没有办法让单元格可点击?

编辑:我进行了更多实验,我意识到在单元格上点击几次后,方法 - didSelectRowAtIndexPath 被调用。但这些都是随机抽头 5-6 次。无法识别模式。

【问题讨论】:

最好重构你的代码。在另一个滚动视图中使用 scrollView 不是一个好主意 设计不允许。 可能你可以用自定义表格视图单元格替换 tapToMatchView 和 questionView。 在我没有显示的滚动视图中,有 2 个表格视图彼此相邻放置。设计不允许我进行更改。有没有办法让单元格可点击? @AsthaGupta 实际上UITableview 有scrollView 属性,那么UITableView 实际上在UIScrollView 中做了什么?你能解释一下我没有得到你想要做什么。我已经回答了你的问题 2-3 次。 【参考方案1】:

尝试在您的父滚动视图中取消选择属性“延迟内容触摸”。它可能会有所帮助!

【讨论】:

以上是关于第一个屏幕上不可见的单元格不可点击的主要内容,如果未能解决你的问题,请参考以下文章

UITableView 中的称重传感器

UICollectionView:激活、滚动到并将第一响应者分配到远处的单元格

如何在datagrid中使一行的单元格不可点击

表格视图单元格在设备上不可见

UITextField 成为第一响应者后,UITableView 不会将单元格滚动到可见

在屏幕上查看可见但 didMoveToWindow: etc 从不调用