我有一个按钮,我将其添加为表视图的tableHeaderView的子视图。按钮看起来很好,并且它可以间歇性地按住它 - 但大多数情况下,它没有响应。我已经尝试将其添加为表格本身的子视图;效果大致相同。我认为问题可能出在滚动视图的触摸拦截上,但是禁用滚动表也没有效果。
我做错了吗?还有其他人遇到过这个吗?
编辑 - 澄清一下,我说的是分组式表格中的主表头,而不是节头。认为基本上是在“联系”屏幕之后建模的。
答案 0 :(得分:23)
我遇到了同样的问题。在我的例子中,我在IB中实例化了一个容器视图(在代码中作为表视图头应用),UIImageView占用了该容器的整个框架。行为不当的按钮位于图像视图中。
原来我需要在IB中设置尺寸大小如下......
容器视图:外部锚点全部打开,内部调整大小 - 全部关闭
子图像视图:所有支柱(内部和外部)
我有几个不同的表视图,都使用标题视图。有些人会正确地回应触摸事件,有些会不稳定。这解决了我的问题
答案 1 :(得分: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文件。)
答案 2 :(得分:8)
我完全不同意Wisequark - 在tableHeaderView中放置一个按钮绝对没有错误,并且包括一个不风险你的应用程序被app Store拒绝。 tableHeaderView被设计为包含您选择的任何元素的任意视图。
就你的问题而言,可能是你的视图模糊了你的按钮,或者它可能只是一个应该报告给Apple的错误。
答案 3 :(得分:3)
奇怪的是,但表标题视图显然调整不正确。 我使用自动布局,所以autoresizing mask不是我的选择。检查我的视图层次结构后:
并注意到我的自定义标题视图的高度不正确,所以只有不到一半是可点击的(参见高亮显示的视图):
手动更新其高度解决了问题:
- (void)viewDidLayoutSubviews {
CGRect frame = self.tableView.tableHeaderView.frame;
frame.size.height = 116.0;
self.tableView.tableHeaderView.frame = frame;
}
此外,更改方向后,表格视图标题高度可能会变为无效。使用提供的解决方案也可以解决此问题。
答案 4 :(得分:2)
我的情况类似于Danny Hall(表头视图是UIImageView,并且有一个UIButton是UIImageView的子视图)。在我的情况下,问题似乎是由按钮是图像视图的子视图引起的。对我有用的是创建一个UIView“包含”视图,这样图像视图和按钮都是“包含”视图的子视图。奇怪。
答案 5 :(得分:1)
使用此 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
答案 6 :(得分:0)
我在Injector
标题视图中遇到了同样的问题UIButtons
操作。首先我尝试了UITableView's
到setAutoresizingMask
然后在阅读了@Davyd和@Alexey的答案之后我意识到我没有设置标题视图的高度然后我将它设置为: -
.None
self.tablevwMain.tableHeaderView?.frame = CGRect(x: 0, y: 0, width: width_view, height: your_height)
标题视图中的所有UIButton's
都能正常工作。
答案 7 :(得分:-1)
不要忘记将页脚高度设置为:
-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
答案 8 :(得分:-7)
您应该考虑这不是headerView的预期sue,并且这样的实现可能会导致因HIG违规而拒绝AppStore。鉴于标题的尺寸要小,最好考虑重构视图。话虽如此,没有简单的方法可以做到手动检测触摸事件并自己确定几何图形,然后根据几何图形执行选择器 - 简而言之,滚动自己的按钮类。