代码之家  ›  专栏  ›  技术社区  ›  Noah Witherspoon

UITableView标题中的UIButton忽略大多数触摸

  •  15
  • Noah Witherspoon  · 技术社区  · 16 年前

    我有一个按钮,我正在添加它作为表视图tableHeaderView的子视图。这个按钮看起来很好,点击并按住它会间歇性地工作——不过,在大多数情况下,它没有反应。我尝试将其添加为表本身的子视图;效果大致相同。我认为问题可能在于滚动视图的触摸拦截,但禁用桌面滚动也没有效果。

    我做错什么了吗?还有其他人遇到过这种情况吗?

    编辑-澄清一下,我说的是分组样式表中的主表头,而不是节表头;基本上模仿了“联系人”屏幕。

    10 回复  |  直到 16 年前
        1
  •  24
  •   Danny Hall    15 年前

    我也有同样的问题。在我的例子中,我在IB中实例化了一个容器视图(在代码中作为表视图头应用),UIImageView占据了该容器的整个帧。行为异常按钮位于图像视图中。

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

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

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

    我有几个不同的表视图,都使用了标题视图。有些人会对触摸事件做出正确的反应,有些人则很古怪。这解决了我的问题

        2
  •  11
  •   user842314 user842314    13 年前

    我也遇到了类似的问题——视图集内的文本字段和按钮作为表头视图,不会对触摸事件做出响应。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文件)。

        3
  •  8
  •   August    16 年前

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

    就你的问题而言,可能是你的按钮被遮挡了,也可能只是一个应该向苹果报告的错误。

        4
  •  4
  •   Davyd Geyl    9 年前

    奇怪的是,表头视图的大小显然调整不正确。 我使用自动布局,所以自动调整掩码对我来说不是一个选择。在检查了我的视图层次结构后: enter image description here

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

    enter image description here

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

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

    enter image description here

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

        5
  •  2
  •   cell    13 年前

    我的情况与Danny Hall的情况类似(表头视图是UIImageView,还有一个UIButton,它是UIImageView的子视图)。在我的例子中,问题似乎是由按钮是图像视图的子视图引起的。对我来说,有效的方法是创建一个UIView“包含”视图,这样图像视图和按钮都是“包含”查看的子视图。奇怪。

        6
  •  1
  •   Alexey Ryabinin    11 年前

    tableHeaderView 0高度 当它正在处理拉入时 表格视图

    使用此 UI视图 子类设置强常数高度并忽略 表格视图 处理

    #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
    
        7
  •  1
  •   Ravi Sharma    8 年前

    我也有同样的问题 UIButtons 操作不起作用 UITableView's 标题视图。首先我试过了 setAutoresizingMask .None 在阅读了@Davyd和@Alexey的答案后,我意识到我没有设置headers视图的高度,于是我将其设置为:-

    self.tablevwMain.tableHeaderView?.frame = CGRect(x: 0, y: 0, width: width_view, height: your_height)
    

    等等 UIButton's 在…内 UITableView的 页眉视图工作正常。

        8
  •  -2
  •   Pang Ajmal PraveeN    8 年前

    对我来说,标题上类似UIControl的UIButtons只有在我将其添加到单元格的contentView中时才起作用

    addSubview(stackView) //Does not work
    contentView.addSubview(stackView) //Works
    
        9
  •  -9
  •   wisequark    16 年前

    别忘了在以下位置设置页脚高度:

    -(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{