【发布时间】:2018-08-10 16:55:27
【问题描述】:
我正在尝试同时使用MDCTextField 和表格视图。 MDCTextField 过滤表格视图,然后用户应该点击一个单元格并且键盘应该关闭并且表格视图应该被隐藏。问题是在表格视图注册单元格被点击之前,键盘关闭并且表格视图被隐藏。如何在MDCTextField 注册点击之前注册单元格被点击?
【问题讨论】:
标签: ios swift xcode material-design mdc-components
我正在尝试同时使用MDCTextField 和表格视图。 MDCTextField 过滤表格视图,然后用户应该点击一个单元格并且键盘应该关闭并且表格视图应该被隐藏。问题是在表格视图注册单元格被点击之前,键盘关闭并且表格视图被隐藏。如何在MDCTextField 注册点击之前注册单元格被点击?
【问题讨论】:
标签: ios swift xcode material-design mdc-components
我使用这个扩展,你可以将它放在一个 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)
}
}
}
理论如下
首先我们得到点击发生的位置,然后我们得到被录制的行女巫的 IndexPath(如果存在),因为我们有 IndexPath,我们只是得到了单元格。
在我给你的例子中,我打印了单元格文本,但你可以做任何你想做的其他操作
我希望这是你想要的,你可以让它工作,因为我没有时间测试它,似乎有些人在触发 touchesBegan 函数时遇到问题
【讨论】: