我有一个按钮,我将其添加为表格视图的 tableHeaderView 的子视图。该按钮看起来很好,并且点击并按住它会间歇性地工作 - 但在大多数情况下,它没有响应。我尝试将其添加为表格本身的子视图;效果差不多。我认为问题可能出在滚动视图的触摸拦截上,但是在表格上禁用滚动也没有效果。
难道我做错了什么?有人遇到过这种情况么?
编辑-澄清一下,我说的是分组样式表中的主表标题,而不是部分标题;认为基本上是仿照“联系人”屏幕。
我有一个按钮,我将其添加为表格视图的 tableHeaderView 的子视图。该按钮看起来很好,并且点击并按住它会间歇性地工作 - 但在大多数情况下,它没有响应。我尝试将其添加为表格本身的子视图;效果差不多。我认为问题可能出在滚动视图的触摸拦截上,但是在表格上禁用滚动也没有效果。
难道我做错了什么?有人遇到过这种情况么?
编辑-澄清一下,我说的是分组样式表中的主表标题,而不是部分标题;认为基本上是仿照“联系人”屏幕。
我有同样的问题。在我的例子中,我有一个在 IB 中实例化的容器视图(在代码中用作表视图标题),UIImageView 占据了该容器的整个框架。行为不端的按钮位于图像视图中。
事实证明,我需要在 IB 中设置尺寸支柱,如下所示...
容器视图:外部锚点全部打开,内部调整大小 - 全部关闭
子图像视图:所有支柱(内部和外部)
我有几个不同的表格视图,都使用标题视图。有些会正确响应触摸事件,有些则不稳定。这解决了我的问题
我有一个类似的问题 - 视图内的文本字段和按钮设置为表头视图,不会响应触摸事件。setAutoResizing 以编程方式为我工作。
我的控制器扩展了 UITableViewController,viewDidLoad 看起来像这样:
- (void)viewDidLoad
{
[super viewDidLoad];
MYCustomWidget *headerView = [[[NSBundle mainBundle]
loadNibNamed:@"MYCustomWidgetView" owner:self options:nil]
objectAtIndex:0];
[headerView setAutoresizingMask:UIViewAutoresizingNone];
self.tableView.tableHeaderView = headerView;
}
('MYCustomWidget' 扩展了 UIView,'MYCustomWidgetView' 是一个 XIB 文件)。
我完全不同意 Wisequark ——在 tableHeaderView 中放置一个按钮绝对没有错,并且包含一个按钮不会冒您的应用被应用商店拒绝的风险。tableHeaderView 被设计为包含您选择的任何元素的任意视图。
就您的问题而言,可能是您有一个视图遮挡了您的按钮,或者,它可能只是一个应该报告给 Apple 的错误。
奇怪的是,但表头视图的大小显然不正确。我使用自动布局,所以自动调整蒙版对我来说不是一个选项。检查我的视图层次结构后:
并注意到我的自定义标题视图的高度不正确,因此只有不到一半是可点击的(请参阅突出显示的视图):
手动更新其高度解决了这个问题:
- (void)viewDidLayoutSubviews {
CGRect frame = self.tableView.tableHeaderView.frame;
frame.size.height = 116.0;
self.tableView.tableHeaderView.frame = frame;
}
此外,更改方向后,表格视图标题高度可能会变得无效。这个问题也可以通过提供的解决方案来解决。
我的情况与 Danny Hall 的情况相似(表头视图是 UIImageView,并且有一个 UIButton,它是 UIImageView 的子视图)。就我而言,问题似乎是由按钮是图像视图的子视图引起的。对我有用的是创建一个 UIView “包含”视图,这样图像视图和按钮都是“包含”视图的子视图。奇怪的。
tableHeaderView在UITableView中处理绘制时的高度为0
使用此UIView子类设置强常量高度,忽略UITableView处理
#import <UIKit/UIKit.h>
@interface CustomHeaderCell : UIView
@end
//-----
@import "CustomHeaderCell.h"
@implementation CustomHeaderCell
-(void)setFrame:(CGRect)frame {
frame.size.height = 43; // !!! constant height
[super setFrame:frame];
}
@end
我有相同的问题操作在标题视图UIButtons
中不起作用。UITableView's
首先,我尝试setAutoresizingMask
了.None
哪个不起作用,然后在阅读了@Davyd 和@Alexey 的答案后,我意识到我没有设置标题视图的高度,然后我将其设置为:-
self.tablevwMain.tableHeaderView?.frame = CGRect(x: 0, y: 0, width: width_view, height: your_height)
并且所有UIButton's
内部UITableView's
标题视图都可以正常工作。
不要忘记将页脚高度设置为:
-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
您应该考虑到这不是 headerView 的预期起诉,并且诸如此类的实现可能会由于 HIG 违规而导致 AppStore 拒绝。鉴于标题的尺寸旨在很小,最好考虑重组您的视图。话虽如此,除了手动检测触摸事件并自己确定几何形状,然后根据几何形状执行选择器 - 简而言之,滚动您自己的按钮类,没有简单的方法可以做到这一点。