我所有的UiTextField都是以编程方式创建的,所以我不能只用鼠标右键单击将onTab函数拖到快速文件上。
我试图在文本字段中添加手势识别器,但是现在我必须双击以触发clickTextField()。
// make clickable
let clickName = MyTapGesture(target: self, action: #selector(ViewMain.clickTextField(_:)))
clickName.count_of_selection = String(i)
self.finishName[i].addGestureRecognizer(clickName)
如何做到这一点,使其一键即可使用。也许有其他方法吗?
答案 0 :(得分:1)
UITextField
具有轻击手势。您需要使用它的委托方法:
func textFieldShouldBeginEditing(_ textField: UITextField)
func textFieldDidEndEditing(_ textField: UITextField)
func textFieldShouldEndEditing(_ textField: UITextField)
func textFieldDidBeginEditing(_ textField: UITextField)
func textFielShouldClear(_ textField: UITextField)
func textFielShouldReturn(_ textField: UITextField)
不要忘记
yourTextField.delegate = self
为您的vc创建扩展名后:
extension ViewController: UITextFieldDelegate {
// here you add the necessary delegate methods for your textFields
}
注意:您不需要实现所有方法。仅使用您需要的那个。可以在AppleDeleveloper上找到更多详细信息。
答案 1 :(得分:0)
尝试为每个UITextField设置一个标记值,以便能够在它们之间进行区分。 例如:
var iter = 0 //Defaults auto-incrementation
let textField = UITextField()
textField.frame = CGRect(x: 20, y: y, width: Int(UIScreen.main.bounds.width-40), height:50)
textField.placeholder = title + " :"
//Setting the tag
textField.tag = iter
//Setting the controller as delegate to UITextField
textField.delegate = self
//AddSubview
self.view.addSubview(textField)
//Auto-incrementation
iter += 1
您还需要利用UITextField委托方法:
//TODO: Declare textFieldDidBeginEdditing here :
func textFieldDidBeginEditing(_ activeTextField: UITextField) {
//Code
}
//TODO: Declare textFieldDidEndEditing here :
func textFieldDidEndEditing(_ activeTextField: UITextField) {
//Code
}
根据您的需要,可以使用更多或更少的方法。祝你好运。