Ios Swift Override UItextField的双击

我想在UITextField上双击编写一个自定义代码,并阻止默认文本编辑和popup键盘。 我已经尝试了以下,迄今没有任何工作。 请帮我解决这个问题。

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. 把一个UIView放在UITextField后面
  2. 设置textField的userInteractionEnabled = false
  3. 将双击手势添加到UIView

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

不知道你计划在双击后用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") } }