0

我正在尝试同时使用MDCTextField和表格视图。过滤表视图,然后MDCTextField用户应该点击一个单元格并且键盘应该关闭并且表视图应该被隐藏。问题是在表格视图注册单元格被点击之前,键盘关闭并且表格视图被隐藏。如何在注册点击之前MDCTextField注册一个单元格被点击?

4

1 回答 1

0

我使用这个扩展,你可以放在一个 helpers.swift 文件中,但是这样你可以在任何 UIViewController 上使用

extension UIViewController {
        func hideKeyboardWhenTappedAround() {
            let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard))
            tap.cancelsTouchesInView = false
            view.addGestureRecognizer(tap)
        }

        @objc func dismissKeyboard() {
            view.endEditing(true)
        }
    }

要使用它,在 viewDidLoad() 上添加这个self.hideKeyboardWhenTappedAround()

编辑基于评论

理论上,下面的代码应该会有所帮助,但我还没有来得及测试它,我读到人们无法触发 touchBegan 函数,但我也不知道有什么其他方法可以做你想做的事。

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    if let touch = touches.first {
        let position = touch.location(in: view)
        if let ip = tableView.indexPathForRow(at: position) {
            let cell = tableView.cellForRow(at: ip)
            print(cell.text)
        }
    }
}

理论如下

首先我们得到点击发生的位置,然后我们得到被录制的行的索引路径(如果存在),因为我们有索引路径,我们只是得到了单元格。

在我给您的示例中,我打印了单元格文本,但您可以执行任何其他您想要的操作

我希望这是你想要的,你可以让它工作,因为我没有时间测试它,似乎有些人在触发 touchesBegan 函数时遇到了问题

于 2018-08-10T17:09:48.290 回答