I added a tap and double tap gesture recognizer to a text field in swift, so that the single tap performs a function but the double tap actually makes the Textfield become first responder. it stops working though after the textfield becomes first responder for the first time. That is, the textfield operates as normally by becoming first responder on a single tap rather than double tap. Any ideas on how to keep my gesture recognizers working?
Another approach:
Just create an 'invisible' view on top of the textfield and add the gesture recognizers to it
import UIKit
class ViewController: UIViewController, UITextFieldDelegate {
@IBOutlet weak var textField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
textField.delegate = self;
}
override func viewDidAppear(animated: Bool) {
let tap1 = UITapGestureRecognizer(target: self, action: "onSingleTap")
let tap2 = UITapGestureRecognizer(target: self, action: "onDoubleTap")
tap2.numberOfTapsRequired = 2
// create a view and put it on top of the textfield
// here created at viewDidAppear for example but you can do it better
var dummieView = UIView(frame: self.textField.frame)
dummieView.backgroundColor = UIColor(red: 1.0, green: 0.0, blue: 0.0, alpha: 0.25)
self.view.addSubview(dummieView)
dummieView.addGestureRecognizer(tap1)
dummieView.addGestureRecognizer(tap2)
}
func onSingleTap(){
println("custom single tap")
if self.textField.isFirstResponder() {
self.textField.resignFirstResponder()
}
}
func onDoubleTap(){
println("double tap")
self.textField.becomeFirstResponder()
}
func textFieldShouldReturn(textField: UITextField) -> Bool {
if self.textField.isFirstResponder() {
self.textField.resignFirstResponder()
}
return true
}
}