禁用 UITableView 浮动部分标题点击?
Posted
技术标签:
【中文标题】禁用 UITableView 浮动部分标题点击?【英文标题】:Disable UITableView floating section header tap-through? 【发布时间】:2013-04-05 17:44:09 【问题描述】:我有一个带有自定义部分标题视图的普通样式 UITableView(6.0 之前,所以不是 UITableViewHeaderFooterView)。有些可以点击,有些则不能。当它们浮动在其他单元格上方的表格视图顶部时,点击会穿过标题部分到下面的表格视图单元格。由于应用程序其他地方对该视图的重用要求,节标题视图是 UITableViewCell 的子类。有没有办法防止触摸通过?
如果我将部分标题视图的子类更改为 UIView 而不是 UITableViewCell,问题就会消失。但是,由于其他原因,此解决方案不可行。 UITableViewCell 中是否有一些我可以禁用的特殊行为?
【问题讨论】:
【参考方案1】:看看- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
实例方法here。
您可以在您的 UIView 子类中重写此方法并返回您想要响应触摸的视图。
可能使用这种方法:
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
id hitView = [super hitTest:point withEvent:event];
if (hitView == self)
return nil;
else
return hitView;
希望这会有所帮助。
【讨论】:
不幸的是,这似乎不起作用。我已经更新了原始问题以包含这一点,因为在应用程序的其他地方重用此视图的要求,节标题是 UITableViewCell 的子类。 UITableViewCell 是 UIView 的子类,因此您应该仍然能够捕捉到触摸。 不幸的是,覆盖 hitTest:withEvent: 方法不起作用。当点在剖面视图中时返回 nil 或 self 仍然会导致下面的单元格也显示为选中状态。不过,该部分也会收到触摸,因为在点击它时会触发附加的操作。【参考方案2】:只要启用用户交互 false
如果您有权访问部分标题视图
【讨论】:
【参考方案3】:我也有同样的情况。 我最终在我的自定义标题单元格中的其他内容下方放置了一个 UIButton,并使其成为整个单元格的大小并使其融入其中。
现在它捕捉到了点击,什么也不做,防止点击进入它下面的单元格。希望这会有所帮助。
【讨论】:
以上是关于禁用 UITableView 浮动部分标题点击?的主要内容,如果未能解决你的问题,请参考以下文章