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