Swift UITextFieldShouldReturn返回键点击

时间:2014-06-10 21:13:59

标签: ios xcode uitextfield swift

(iOS8,Xcode6,Swift) 使用Swift,我如何捕捉" Return"按钮?

以下链接中的文档指定使用textFieldShouldReturn方法:

// Swift
@optional func textFieldShouldReturn(_ textField: UITextField!) -> Bool

我挂断的地方在" _ textField"部分。我使用Storyboard创建了文本字段。如何捕获此特定文本字段的通知?我是否需要创建一个新类并将其设置为此文本字段的委托?我是否为文本分配了一个名称,然后以某种方式将其挂钩?

https://developer.apple.com/documentation/uikit/uitextfielddelegate/1619603-textfieldshouldreturn

4 个答案:

答案 0 :(得分:84)

class ViewController: UIViewController,UITextFieldDelegate //set delegate to class

@IBOutlet var txtValue: UITextField //create a textfile variable

override func viewDidLoad() {
   super.viewDidLoad() 
   txtValue.delegate = self //set delegate to textfile 
}

func textFieldShouldReturn(_ textField: UITextField) -> Bool {   //delegate method
   textField.resignFirstResponder()
   return true
}

答案 1 :(得分:21)

实施此功能

func textFieldShouldReturn(_ textField: UITextField) -> Bool {   //delegate method
   textField.resignFirstResponder()
   return true
}

对于委托,您可以使用实用工具窗格/ Connections Inspector / delegate 进行设置,然后拖动到ViewController(故事板中的黄色按钮)

然后您不需要以编程方式为每个文本字段设置委托

答案 2 :(得分:3)

您需要将对象设置为文本字段的委托。通常,这将是文本字段所在的视图控制器。您不需要从任何其他类继承,或者严格来说,实现委托(但您可以实现UITextFieldDelegate以使事情更清楚。)

答案 3 :(得分:0)

在Swift 4.2和Xcode 10.1中

//UITextField delegate method
func textFieldShouldReturn(_ textField: UITextField) -> Bool {

    if textField == TF1 {
        textField.resignFirstResponder()//
        TF2.becomeFirstResponder()//TF2 will respond immediately after TF1 resign.
    } else if textField == TF2  {
        textField.resignFirstResponder()
        TF3.becomeFirstResponder()//TF3 will respond first
    } else if textField == TF3 {
        textField.resignFirstResponder()
    }
    return true
}