对于UITableViewCell内的嵌套UITableView,未调用didSelectRowAt indexPath:

时间:2017-09-27 15:43:05

标签: ios swift uitableview

我有UITableView嵌套在另一个UITableView内。 在嵌套的tableView中,当用户点击一个单元格时,单元格会突出显示,但是没有调用委托方法didSelectRowAt indexPath:

正在调用其他委托方法,例如willDisplay cell: forRowAt indexPath:scrollViewDidScroll(_:)等方法。所以这告诉我代表等正确连接。

在同一个应用程序的另一部分中,我在另一个UITableView内部使用相同类型的结构UITableView,并且在那里工作正常。 我对这两者进行了广泛的比较,到目前为止我还没有发现差异,也没有任何线索为什么一个应该工作而另一个不应该![/ p>

请参阅嵌套UITableViewCell的实现。 如果控制台会记录“检测到触摸”这一行会很好。 它会记录“滚动”和“将显示单元格”的行。

import UIKit

class TestTableViewCell: UITableViewCell {

}

extension TestTableViewCell: UITableViewDataSource {
    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 5
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        return tableView.dequeueReusableCell(withIdentifier: "FileCell")!
    }
}

extension TestTableViewCell: UITableViewDelegate {
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        print("touch detected")
    }

    func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
        print("will display cell")
    }

    func scrollViewDidScroll(_ scrollView: UIScrollView) {
        print("scrolling")
    }
}

1 个答案:

答案 0 :(得分:0)

最后解决方案非常简单。 我为外UITapGestureRecognizer设置了UITableView。 我在那里解雇了键盘。 删除UITapGestureRecognizer后,它开始正常工作。

我完全忽视了这一点,但现在已经解决了!