我有一个非常奇怪的问题,我已经工作了几天。我有一个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
}