gpt4 book ai didi

ios - 触摸 UITableView 时取消手势识别器

转载 作者:行者123 更新时间:2023-11-30 11:41:45 24 4
gpt4 key购买 nike

我有一个带有 2 个表格 View 和几个文本字段的 View ,我已经实现了一个隐藏键盘的扩展:

当我触摸屏幕时键盘会隐藏,但我想在触摸TableView时禁用UITapGestureRecognizer,否则我无法与单元格交互。

extension UIViewController {

func OcultarTecladoTocarPantalla() {
let tap : UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(UIViewController.OcultarTeclado))
view.addGestureRecognizer(tap)
}
@objc func OcultarTeclado() {
view.endEditing(true)
}

}

最佳答案

编辑:我看到您正在扩展 UIViewController (这可能并不可取,因为它适用于 UIViewController 的所有实例和子类),但您仍然应该能够设置委托(delegate)。进行以下更改(代码来自 this answer )。

通过编写 extension UIViewController: UIGestureRecognizerDelegate {

来扩展 UIGestureRecognizerDelegate

添加手势识别器时设置委托(delegate):tap.delegate = self

实现以下委托(delegate)方法。需要稍微修改一下才能处理两个表格 View 。

// UIGestureRecognizerDelegate method
func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
if touch.view?.isDescendantOfView(self.tableView) == true {
return false
}
return true
}
<小时/>

之前的回答:

如果 UIGestureRecognizercancelsTouchesInView 属性为 false,则其下方的 View 除了手势识别器之外还将接收触摸。

如果您确实想在这种情况下有效禁用手势,请实现委托(delegate)方法 gestureRecognizer(_:shouldReceive:) 并在触摸位于表格 View 中时返回 false。

参见https://developer.apple.com/documentation/uikit/uigesturerecognizerhttps://developer.apple.com/documentation/uikit/uigesturerecognizerdelegate/1624214-gesturerecognizer .

关于ios - 触摸 UITableView 时取消手势识别器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49223459/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com