Ios Swift Override 双击 UItextField

Posted

技术标签:

【中文标题】Ios Swift Override 双击 UItextField【英文标题】:Ios Swift Override double tap of UItextField 【发布时间】:2016-07-21 20:28:42 【问题描述】:

我想在 UITextField 上双击编写自定义代码并阻止默认文本编辑和键盘弹出。我已经尝试了以下方法,到目前为止没有任何东西对我有用。请帮我解决这个问题。

let gestureArray = NamTxtBoxVal.gestureRecognizers
var tapGesture = UITapGestureRecognizer()
for idxVar in gestureArray!

    if let tapVar = idxVar as? UITapGestureRecognizer
    
        if tapVar.numberOfTapsRequired == 2
        
            tapGesture = tapVar
            NamTxtBoxVal.removeGestureRecognizer(tapGesture)
        
    


let doubleTap = UITapGestureRecognizer(target: self, action: #selector(namFnc(_:)))
doubleTap.numberOfTapsRequired = 2
doubleTap.delegate = self
tapGesture.requireGestureRecognizerToFail(doubleTap)
NamTxtBoxVal.addGestureRecognizer(doubleTap)

我也试过了:

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool


    return false

【问题讨论】:

【参考方案1】:

我知道你这样做的唯一方法是

    在 UITextField 后面放一个 UIView 设置 textField 的 userInteractionEnabled = false 向 UIView 添加双击手势

这将允许您在 TextField 区域上注册双击,而不会弹出任何键盘或进入编辑模式。

不确定双击后您打算如何处理 textField,但此时您应该能够以编程方式处理大部分内容。

代码如下:

class ViewController: UIViewController 
    @IBOutlet weak var myViewBehindMyTextField: UIView!
    @IBOutlet weak var myTextField: UITextField!

    override func viewDidLoad() 
        super.viewDidLoad()
        let tapGesture = UITapGestureRecognizer(target: self, action: #selector(ViewController.myTextFieldTapped(_:)))
        tapGesture.numberOfTapsRequired = 2
        myViewBehindMyTextField.addGestureRecognizer(tapGesture)
    

    func myTextFieldTapped(sender: UITapGestureRecognizer) 
        print("Double tapped on textField")
    

【讨论】:

在您的情况下,单击一次的 TextField 编辑将消失,这是我需要的。 哦,不知道您需要单击一下。对不起。在这种情况下,我不知道如何在键盘出现并迅速消失的情况下执行此操作。 @SujayUN 的一个想法是在 UITextField 上方放置一个 clearColor UIView。然后让 UIView 仅在单击时将点击传递给 UITextField,并让 UIView 相应地处理双击。 我也有平移手势来移动屏幕周围的文本字段,所以移动时都很难处理

以上是关于Ios Swift Override 双击 UItextField的主要内容,如果未能解决你的问题,请参考以下文章

为 iOS [Swift、iOS 15] 编写 PDF 查看器时无法激活三次轻击手势

iOS Swift - 如何更改表格视图的背景颜色?

iOS swift中的自定义视图出口在视图控制器中不起作用

(细节控)swift3.0与融云IMKIT开发问题(一部分) override func onSelectedTableRow Method does not override any method

Swift教程_swift常见问题(0005)_完美解决Cannot override 'dealloc'异常

如何使用 Swift 检测 iOS 应用程序何时出现在前台? [复制]