UITableView标题的上半部分没有响应 - Xcode 7.2 / Swift

时间:2016-01-14 16:53:28

标签: ios iphone swift uitableview

我有一个非常奇怪的问题,我已经工作了几天。我有一个UITableView,我正在为每个标题定义自定义视图。它们看起来都很好(需要进行大量的调整才能将所有东西都放在正确的位置)。在视图中,我有两个按钮,一个用于展开/折叠部分下方的行,另一个用于删除部分。一切都很好。

问题是只有标题的底部实际上响应了点击。实际上,顶部的17.5像素似乎没有响应。我尝试将按钮子视图放在前面。我尝试用UITapGestureRecognizer替换按钮,我已经尝试将它放在标题本身和viewDidLoad()中,然后检查点击的区域是否在标题内。

我已定义标题的框架以填充整个可见标题区域。我甚至尝试从负位置开始,假设它会溢出标头。 deleteButton后面的红色背景只是为了显示该区域正在填充整个标题的可见区域。我稍后会删除红色背景。

但是,只有在标题的底部被轻敲时,一切才有效。我完全失去了。由于一切都有同样的问题,下面只是设置我的标题的代码,因为这是我喜欢的方式。在底部是一个截图,以便您可以看到一切看起来不错。任何帮助将不胜感激。

(作为旁注 - 我已经以相同的方式创建了每个单元格的视图,并在右侧添加了带有铅笔的按钮以编辑单元格的内容......它工作正常 - 你可以点击右侧单元格的整个100%高度,它可以工作。我已经比较了代码,我不知道它在哪里有很大不同。)

func tableView(tableView:UITableView,viewForHeaderInSection section:Int) - > UIView的? {

    let headerBar = UITableViewHeaderFooterView()

    var buttonY = CGFloat(0)

    var buttonH = CGFloat(0)

    var xY = CGFloat(0)

    let hLabel = UILabel()

    hLabel.text = prayerListSectionNames[section].uppercaseString

    if section == 0 {

        hLabel.frame = CGRectMake(tablePrayer.frame.origin.x + 20, 14, hLabel.frame.width, 20)

        buttonY = 0

        buttonH = 0

        xY = 12

    } else {

        hLabel.frame = CGRectMake(tablePrayer.frame.origin.x + 20, -8, hLabel.frame.width, 20)

        buttonY = -18

        buttonH = 18

        xY = 10

    }

    hLabel.font = UIFont.boldSystemFontOfSize(14)

    hLabel.textAlignment = .Center

    hLabel.sizeToFit()

    headerBar.addSubview(hLabel)

    let deleteButton = UIButton()

    let imgX = UIImageView(image: UIImage(named:"red white x.png"))

    imgX.frame = CGRectMake(2, xY, 15, 15)

    imgX.contentMode = .ScaleAspectFit

    deleteButton.addSubview(imgX)

    deleteButton.imageView?.image = UIImage(named:"red white x.png")

    let buttonX = tablePrayer.frame.origin.x + tablePrayer.frame.width - 30

    deleteButton.frame = CGRectMake(buttonX, buttonY, 20, buttonH)

    deleteButton.autoresizingMask = UIViewAutoresizing.FlexibleHeight

    deleteButton.tag = 20000 + section

    deleteButton.addTarget(self, action: "deleteButtonPressed:", forControlEvents: .TouchUpInside)

    deleteButton.backgroundColor = UIColor.redColor()

    headerBar.addSubview(deleteButton)

    let toggleShowButton = UIButton()

    toggleShowButton.frame = CGRectMake(0, 0, tablePrayer.frame.width - 50, buttonH)

    toggleShowButton.addTarget(self, action: "toggleShowPressed:", forControlEvents: .TouchUpInside)

    toggleShowButton.tag = 30000 + section

    headerBar.addSubview(toggleShowButton)

    headerBar.bringSubviewToFront(toggleShowButton)

    headerBar.bringSubviewToFront(deleteButton)

return headerBar

}

screenshot

0 个答案:

没有答案