didSelectCellAtIndexPath 未调用

didSelectCellAtIndexPath not called

我知道有很多相关的 post 并且我已经尝试了所有我能找到的,不幸的是问题仍然存在。

所以我在 UIViewController 内部有一个 tableView,它由 2 个自定义单元格填充,一个有一个 UITextField,另一个有一个 UISwitch , 并且都有 UILabel。然后我开始实施 didSelectCell(at: IndexPath) 方法

我确保委托已连接到视图控制器。

在方法内部,我只是写了一个打印语句来确保水龙头正在注册。但是,当我点击 UITextFieldUILabel.

时,打印消息确实会打印到控制台

我感觉这与 firstResponderUITextField 的事情有关,它正在侵蚀我的点击注册,但不确定。

欢迎任何反馈!

更新

这是我的自定义单元格上的设置:

这里是 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

这是演示