didSelectCellAtIndexPath 未调用
didSelectCellAtIndexPath not called
我知道有很多相关的 post 并且我已经尝试了所有我能找到的,不幸的是问题仍然存在。
所以我在 UIViewController
内部有一个 tableView
,它由 2 个自定义单元格填充,一个有一个 UITextField
,另一个有一个 UISwitch
, 并且都有 UILabel
。然后我开始实施 didSelectCell(at: IndexPath)
方法
我确保委托已连接到视图控制器。
在方法内部,我只是写了一个打印语句来确保水龙头正在注册。但是,当我点击 UITextField
和 UILabel
.
时,打印消息确实会打印到控制台
我感觉这与 firstResponder
和 UITextField
的事情有关,它正在侵蚀我的点击注册,但不确定。
欢迎任何反馈!
更新
这是我的自定义单元格上的设置:
这里是 didSelect
方法:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("tapped on cell")
if let cell = tableView.cellForRow(at: indexPath) as? NumericInputTableViewCell{
print("Tapped on numericcell")
} else if let cell = tableView.cellForRow(at: indexPath) as? BooleanInputTableViewCell {
print("Tapped on booleancell")
}
}
当您单击单元格时触发委托方法,而不是单元格上的其他元素。因此,在 table 视图中创建一些空单元格,然后再试一次。如果它被打印出来,那么这意味着你有元素覆盖在单元格上并且单元格本身没有被点击。
然后您可以从情节提要中为您的 UITextField
内容禁用用户交互,然后试一试。理想情况下,当您单击 table 视图单元格上的文本字段时,我认为正确的响应是键盘将出现并且不应触发 didSelectCell
。
这是演示
我知道有很多相关的 post 并且我已经尝试了所有我能找到的,不幸的是问题仍然存在。
所以我在 UIViewController
内部有一个 tableView
,它由 2 个自定义单元格填充,一个有一个 UITextField
,另一个有一个 UISwitch
, 并且都有 UILabel
。然后我开始实施 didSelectCell(at: IndexPath)
方法
我确保委托已连接到视图控制器。
在方法内部,我只是写了一个打印语句来确保水龙头正在注册。但是,当我点击 UITextField
和 UILabel
.
我感觉这与 firstResponder
和 UITextField
的事情有关,它正在侵蚀我的点击注册,但不确定。
欢迎任何反馈!
更新
这是我的自定义单元格上的设置:
这里是 didSelect
方法:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("tapped on cell")
if let cell = tableView.cellForRow(at: indexPath) as? NumericInputTableViewCell{
print("Tapped on numericcell")
} else if let cell = tableView.cellForRow(at: indexPath) as? BooleanInputTableViewCell {
print("Tapped on booleancell")
}
}
当您单击单元格时触发委托方法,而不是单元格上的其他元素。因此,在 table 视图中创建一些空单元格,然后再试一次。如果它被打印出来,那么这意味着你有元素覆盖在单元格上并且单元格本身没有被点击。
然后您可以从情节提要中为您的 UITextField
内容禁用用户交互,然后试一试。理想情况下,当您单击 table 视图单元格上的文本字段时,我认为正确的响应是键盘将出现并且不应触发 didSelectCell
。
这是演示