Ios UITableView内部UIScrollView-单元格不可单击
我有一个UITableView无法检测触摸的问题 在仅限iPhone的应用程序中,我有一个UIViewController,其中包含:Ios UITableView内部UIScrollView-单元格不可单击,ios,swift,uitableview,uiscrollview,swift2,Ios,Swift,Uitableview,Uiscrollview,Swift2,我有一个UITableView无法检测触摸的问题 在仅限iPhone的应用程序中,我有一个UIViewController,其中包含: UIScrollView UIView(比如说内容视图) 一些标签 UITableView(最后一个) 标签具有动态高度,因为它们包含一些我必须从web检索的文本,所以我使用自动布局。 我在viewdillayoutsubviews方法中设置UIScrollView的内容大小,我通过求和UITableView.frame.origin.y及其高度来实
- UIScrollView
- UIView(比如说内容视图)
- 一些标签
- UITableView(最后一个)
- UIView(比如说内容视图)
viewdillayoutsubviews
方法中设置UIScrollView的内容大小,我通过求和UITableView.frame.origin.y
及其高度来实现这一点
问题来了:当标签只包含一些单词,并且UITableView没有超过iPhone屏幕大小时,一切正常。但是当它们增长时,UITableView被按下,当我向下滚动时,我就不能再点击单元格了。此外,如果在加载视图时,表格一半可见,一半不可见,我可以单击可见单元格,但如果向下滚动,我无法单击其他单元格
我使用的是swift 2和Xcode 7
以下是一个例子:
可点击:
不可点击:
在此处为答案添加一些信息:
根据Apple文档,您不应该在UIScrollView中嵌入UITableView
重要提示:不应在UIScrollView对象中嵌入UIWebView或UITableView对象。如果这样做,可能会导致意外行为,因为两个对象的触摸事件可能会混淆并错误处理
添加:解决方案由于您也想在表格上方滚动内容,一种解决方案是为表格放置一个
标题视图
,并将内容放在那里,使其沿表格视图滚动。如果使用自动布局
,无需将contentSize
指定为UIScrollView
,因为它将通过获取其子视图的高度自动展开
在您的情况下,当表视图高度
增加时,增加容纳表视图
的基础ui视图
(您提到的内容视图)的高度
UITableView
在扩展到其容器视图下方时将变得无响应。请执行以下操作:
yourView.clipToBounds = true
现在,如果未显示UITableView
,则表示按住UITableView
时,您的UIView
大小不一样
确保您的ui视图
高度更高,以便容纳其中的内容,然后尝试点击它
更新:
如果使用的是自动布局
,请执行以下操作
UIView
ui视图的高度约束出口
viewdilayoutsubviews
中,将UIView
的约束更改为UITableView
contentSize
高度
self.heightConstraint=self.tableView.contentSize.height让我知道,如果这有帮助 当您长按单元格时,它是否会单击?不,它根本没有响应。您是否使用了
AutoLayout
?重复的-因此我应该将表格置于内容视图之外,并设置self.tableView.tableHeaderView=myContentView
?但是,该表是否仍在scrollview中,或者我是否也应该删除它?如果是,表格会自动滚动标题视图吗?谢谢。只需将UIView拖放到表格视图的正上方……该视图将自动成为表格的标题视图。您可以在那里放置内容。我决定手动指定contentSize
,因为我无法使scrollview与自动布局一起正常工作。是否可以设置自动布局约束以基于表格视图高度扩展UIView
?编辑以下是我使用的代码:contentView.frame.size.height=self.answerTable.frame.origin.y+self.answerTable.frame.size.height scrollView.contentSize.height=self.answerTable.frame.origin.y+self.answerTable.frame.size.height
。是否正确?请尝试以下方法:init(item:attribute:relatedBy:toItem:attribute:multiplier:constant:)对于显示的屏幕截图中的视图,UITableView本身将完成这些操作。你可以用自定义的sectionHeaders和TableViewCells来创建它。我不明白,我应该用这个方法初始化什么?好的,这让事情变得更清楚了。现在,UITableCell
不会出现。但是,在viewdilayoutsubviews
方法中,我将self.contentView.frame.size.height=self.answerTable.frame.origin.y+self.answerTable.frame.size.height
设置为contentView
足够高。我做错了什么?你用的是自动布局吗是的,我用的是自动布局。我没有将约束设置为您所说的内容,但是编辑约束而不是使用frame.size…
有效。非常感谢你@你帮了我很多忙+1欢迎您的评论!