在UITableView标题中的UIButton忽略最触动
我有一个按钮,我将添加为表视图的tableHeaderView的子视图。按钮显示正常,点击并保持不动 - 大多数情况下,它没有反应。我试着将它作为表本身的子视图来添加;效果大致相同。我认为这个问题可能与滚动视图的触摸拦截有关,但在表上禁用滚动也没有效果。在UITableView标题中的UIButton忽略最触动
我做错了什么?有人遇到过这种情况么?
编辑 - 为了澄清,我说的是主表标题,而不是段标题,在分组样式表中;认为基本上是在“联系人”屏幕后建模的。
我有同样的问题。在我的情况下,我有一个在IB中实例化的容器视图(它被用作代码中的表视图标题),UIImageView占用了该容器的整个框架。行为不端按钮驻留在图像视图中。
原来我需要在IB上浆支柱设置如下......
容器视图:外部锚都在,内部大小调整 - 全部关闭
子图像视图:在(内部的所有支柱和外部)
我有几个不同的表视图,所有使用标题视图。有些人会正确回应触摸事件,有些是片状的。这解决了我的问题
+1。这对我有效。我没有使用IB,所以我不得不用`-setAutoresizingMask:`编程设置struts,并且我发现它只在容器上是必需的。内部图像控件不需要任何东西。谢谢!永远不会偶然偶然发现这一点。 – 2010-03-03 13:57:16
经过几个小时的抨击我的头,这为我工作。谢谢。 – thedeveloper3124 2013-01-19 10:51:02
您应该认为这不是headerView的预期起诉,并且像这样的实现可能会导致由于HIG违例而从AppStore中被拒绝。考虑到标题的尺寸很小,最好考虑对视图进行重构。话虽如此,但没有简单的方法可以通过手工检测触摸事件并自己确定几何体,然后根据几何体执行选择器 - 简而言之,就是滚动您自己的按钮类。
我在HIG中找不到任何内容,禁止使用表格中的按钮(而不是章节)页眉/页脚视图;联系人应用程序将按钮附加到表格页脚没有问题,苹果公司的“HeaderFooter”样本做了类似的事情(虽然它表现出同样的问题)。雷达,也许? – 2008-11-18 00:03:41
更可能的是,我会建议提交一个错误。 – wisequark 2008-11-18 17:29:52
我完全不同意Wisequark - 但绝对没有错与把一个按钮,在tableHeaderView,并包括一个会不冒险您的应用程序从App Store被拒绝。 tableHeaderView被设计成一个包含你选择的任何元素的任意视图。
就您的问题而言,可能是您的视图模糊了您的按钮,或者,它可能只是一个应该向Apple报告的错误。
我有一个类似的问题 - 视图中的文本框和按钮设置为表头视图,它不会响应触摸事件。 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文件)。
我的情况与Danny Hall's相似(表头视图是UIImageView,并且UIButton是UIImageView的子视图)。就我而言,问题似乎是由按钮是图像视图的子视图造成的。对我而言,创建一个UIView“contains”视图,使图像视图和按钮都是“包含”视图的子视图。奇怪。
tableHeaderView具有0高度同时它在处理拉伸的UITableView
使用本的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
奇怪的是,表格标题视图显然不正确调整大小。 我使用自动布局,所以自动调整掩码不适合我。检查我的看法层次结构后:
,发现我的自定义标题视图有不正确的高度,所以才把少了一半是可点击(见突出显示视图):
的手动更新它的高度固定的问题:
- (void)viewDidLayoutSubviews {
CGRect frame = self.tableView.tableHeaderView.frame;
frame.size.height = 116.0;
self.tableView.tableHeaderView.frame = frame;
}
另外,表格视图标题高度在方向更改后可能会失效。这个问题也可以通过提供的解决方案来解决。
不要忘记设置页脚高度:
-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
我有同样的问题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
标题视图正常工作。
我遇到了这个确切的问题,但接受的答案不适用于我。 [这个问题的答案](http://stackoverflow.com/questions/19256996/uibutton-not-showing-highlight-on-tap-in-ios7/19299451#19299451)完美地解决了我的问题。 – 2014-01-16 03:46:18