15

我有一个按钮,我将其添加为表格视图的 tableHeaderView 的子视图。该按钮看起来很好,并且点击并按住它会间歇性地工作 - 但在大多数情况下,它没有响应。我尝试将其添加为表格本身的子视图;效果差不多。我认为问题可能出在滚动视图的触摸拦截上,但是在表格上禁用滚动也没有效果。

难道我做错了什么?有人遇到过这种情况么?

编辑-澄清一下,我说的是分组样式表中的主表标题,而不是部分标题;认为基本上是仿照“联系人”屏幕。

4

9 回答 9

24

我有同样的问题。在我的例子中,我有一个在 IB 中实例化的容器视图(在代码中用作表视图标题),UIImageView 占据了该容器的整个框架。行为不端的按钮位于图像视图中。

事实证明,我需要在 IB 中设置尺寸支柱,如下所示...

容器视图:外部锚点全部打开,内部调整大小 - 全部关闭

子图像视图:所有支柱(内部和外部)

我有几个不同的表格视图,都使用标题视图。有些会正确响应触摸事件,有些则不稳定。这解决了我的问题

于 2010-01-01T18:25:24.253 回答
11

我有一个类似的问题 - 视图内的文本字段和按钮设置为表头视图,不会响应触摸事件。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 文件)。

于 2011-10-25T23:44:16.733 回答
8

我完全不同意 Wisequark ——在 tableHeaderView 中放置一个按钮绝对没有错,并且包含一个按钮不会冒您的应用被应用商店拒绝的风险。tableHeaderView 被设计为包含您选择的任何元素的任意视图。

就您的问题而言,可能是您有一个视图遮挡了您的按钮,或者,它可能只是一个应该报告给 Apple 的错误。

于 2008-11-19T05:14:28.687 回答
4

奇怪的是,但表头视图的大小显然不正确。我使用自动布局,所以自动调整蒙版对我来说不是一个选项。检查我的视图层次结构后: 在此处输入图像描述

并注意到我的自定义标题视图的高度不正确,因此只有不到一半是可点击的(请参阅突出显示的视图):

在此处输入图像描述

手动更新其高度解决了这个问题:

- (void)viewDidLayoutSubviews {
    CGRect frame = self.tableView.tableHeaderView.frame;
    frame.size.height = 116.0;
    self.tableView.tableHeaderView.frame = frame;
}

在此处输入图像描述

此外,更改方向后,表格视图标题高度可能会变得无效。这个问题也可以通过提供的解决方案来解决。

于 2015-09-30T12:15:17.133 回答
2

我的情况与 Danny Hall 的情况相似(表头视图是 UIImageView,并且有一个 UIButton,它是 UIImageView 的子视图)。就我而言,问题似乎是由按钮是图像视图的子视图引起的。对我有用的是创建一个 UIView “包含”视图,这样图像视图和按钮都是“包含”视图的子视图。奇怪的。

于 2012-01-10T23:42:29.750 回答
1

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
于 2013-10-25T12:53:48.307 回答
1

我有相同的问题操作在标题视图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标题视图都可以正常工作。

于 2017-04-17T08:01:25.320 回答
-2

不要忘记将页脚高度设置为:

-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
于 2015-10-16T19:07:21.777 回答
-9

您应该考虑到这不是 headerView 的预期起诉,并且诸如此类的实现可能会由于 HIG 违规而导致 AppStore 拒绝。鉴于标题的尺寸旨在很小,最好考虑重组您的视图。话虽如此,除了手动检测触摸事件并自己确定几何形状,然后根据几何形状执行选择器 - 简而言之,滚动您自己的按钮类,没有简单的方法可以做到这一点。

于 2008-11-17T23:43:58.123 回答