iOS - 为UITextField添加轻击手势

6

我在给UITextField添加Tap手势时遇到了问题。以下是代码:

@IBAction func hanldeTap(recognizer: UITapGestureRecognizer) {
    println("works")
}

这个操作与“点击手势识别器”相关。在我的文本字段中,我已经在“出口集合”中定义了gestureRecognizer。以我的猜测,它应该是可以工作的。在所描述的配置中,手势可以适用于按钮或自定义视图。
你能告诉我可能出了什么问题,以及我该如何解决吗?
4个回答

11

UITextField有delegate方法,您可能希望考虑实现这些方法。或者只需为您的textfield添加操作事件。

例如,在viewDidLoad中:

textField.addTarget(self, action:Selector("textDidBeginEditing"), forControlEvents: UIControlEvents.EditingDidBegin)

然后实现这个:

func textDidBeginEditing(sender:UITextField) -> Void
{
   // handle begin editing event
} 

为什么在UITextField中我不能只使用UITapGesture? - LakaLe_
我想在此文本上轻触一次并显示弹出视图,当轻触两次时,我想隐藏它。我认为我不能以这种方式管理它。我认为我必须创建一个自定义视图。 - LakaLe_
我同意你的最后一句话,这是更好的想法。 - Allan Macatingrao

2
如果您设置了文本字段的代理,您可以使用;
可选函数func textFieldDidBeginEditing(_ textField: UITextField)

可选函数func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool
等等。

1
textField.addTarget(self, action:#selector(textDidBeginEditing), for: UIControl.Event.editingDidBegin)

0

Swift 4.2

在接受的答案中添加

不要忘记在选择器(小写s)之前添加“#”,即#selector

textField.addTarget(self, action: #selector(textDidBeginEditing), for: UIControl.Event.editingDidBegin)

并在函数之前添加@objc。像这样

@objc func textDidBeginEditing(sender:UITextField) -> Void


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接