由于更新到 xcode 12,我无法在 UITableViewCell 中放置任何 UIControl
Since Updating to xcode 12 I am not able to place any UIControl inside UITableViewCell
我有一个使用表格视图的搜索表单。今天更新 Xcode 12 后,UISwitch、UITextField、UISlider 在嵌套在 UITableViewCell 中时不再工作。是否有一个 属性 已经更改,我需要设置它才能再次运行?
为了确定这不仅仅是我的项目,我创建了一个新项目并在其中嵌入了一个 UITextField,但它也不起作用。
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell()
let textField = UITextField(frame: CGRect(x: 5, y: 5, width: 400.0, height: 25.0))
textField.delegate = self
textField.backgroundColor = .blue
cell.addSubview(textField)
return cell
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("this will get called even when selecting the UITextField")
}
func textFieldDidBeginEditing(_ textField: UITextField) {
print("this is never called")
}
您的代码总是错误的:
cell.addSubview(textField)
您必须永远不要向单元格添加子视图。将子视图添加到单元格的 contentView
.
自从我升级到 iOS 14 后,我也遇到了同样的情况。
当我将子视图直接添加到单元格时,这对我有用,
cell.contentView.isUserInteractionEnabled = 真
遇到了类似的问题,并且一直在解决这个问题...我的代码的问题是在 UITableViewCell 下我这样做了:
didSet {
if contentView.backgroundColor == backgroundColor { return }
contentView.backgroundColor = backgroundColor
for v in otherView.subview { v.backgroundColor = backgroundColor }
}
在此处删除此行 contentView.backgroundColor = backgroundColor
成功了。单元格现在可见并且没有重复 contentView
也许这会对某人有所帮助,因为我只找到了有关将子视图直接添加到 cell
而不是 cell.contentView
的答案
编辑 1:
好的,只是想告诉你最新情况,问题是我的子视图类型为 UIStackView
并且我使用了 subview
而实际上我应该使用 arrangedSubviews
希望这对某人有所帮助
我有一个使用表格视图的搜索表单。今天更新 Xcode 12 后,UISwitch、UITextField、UISlider 在嵌套在 UITableViewCell 中时不再工作。是否有一个 属性 已经更改,我需要设置它才能再次运行?
为了确定这不仅仅是我的项目,我创建了一个新项目并在其中嵌入了一个 UITextField,但它也不起作用。
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell()
let textField = UITextField(frame: CGRect(x: 5, y: 5, width: 400.0, height: 25.0))
textField.delegate = self
textField.backgroundColor = .blue
cell.addSubview(textField)
return cell
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("this will get called even when selecting the UITextField")
}
func textFieldDidBeginEditing(_ textField: UITextField) {
print("this is never called")
}
您的代码总是错误的:
cell.addSubview(textField)
您必须永远不要向单元格添加子视图。将子视图添加到单元格的 contentView
.
自从我升级到 iOS 14 后,我也遇到了同样的情况。 当我将子视图直接添加到单元格时,这对我有用,
cell.contentView.isUserInteractionEnabled = 真
遇到了类似的问题,并且一直在解决这个问题...我的代码的问题是在 UITableViewCell 下我这样做了:
didSet {
if contentView.backgroundColor == backgroundColor { return }
contentView.backgroundColor = backgroundColor
for v in otherView.subview { v.backgroundColor = backgroundColor }
}
在此处删除此行 contentView.backgroundColor = backgroundColor
成功了。单元格现在可见并且没有重复 contentView
也许这会对某人有所帮助,因为我只找到了有关将子视图直接添加到 cell
而不是 cell.contentView
编辑 1:
好的,只是想告诉你最新情况,问题是我的子视图类型为 UIStackView
并且我使用了 subview
而实际上我应该使用 arrangedSubviews
希望这对某人有所帮助