关于ios:如何在Swift中手动启用/禁用键盘Return键?

How could I enable / disable keyboard Return Key manually in Swift?

This question is not duplicated from these:

  • How to disable/enable the return key in a UITextField?

  • How to enable or disable the keyboard return key

  • Enable and Disable Keyboard return key on demand in iOS

我有两个TextFields

1
2
@IBOutlet weak var textField1: UITextField!
@IBOutlet weak var textField2: UITextField!
  • textField1具有"返回"键之类的"下一步"按钮;

  • textField2具有"返回"键之类的"转到"按钮;

textField1

textField2

我想启用第二个TextField的"转到"按钮,即使两个TextField都不为空。

我尝试将someTextField.enablesReturnKeyAutomaticallyTextFieldDelegate一起使用,但是没有用。

谢谢你的帮助。


下图:textField1为空时,textField2被禁用。 如果后者为非空,则启用textField2,但仅当textField2为非空(通过.enablesReturnKeyAutomatically属性)时,启用Go按钮,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/* ViewController.swift */
import UIKit

class ViewController: UIViewController, UITextFieldDelegate {
    @IBOutlet weak var textField1: UITextField!
    @IBOutlet weak var textField2: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()

        // text field delegates
        textField1.delegate = self
        textField2.delegate = self

        // set return key styles
        textField1.returnKeyType = UIReturnKeyType.Next
        textField2.returnKeyType = UIReturnKeyType.Go

        // only enable textField2 if textField1 is non-empty
        textField2.enabled = false

        // only enable 'go' key of textField2 if the field itself is non-empty
        textField2.enablesReturnKeyAutomatically = true
    }

    // UITextFieldDelegate
    func textFieldShouldReturn(textField: UITextField) -> Bool {

        if (textField1.text?.isEmpty ?? true) {
            textField2.enabled = false
            textField.resignFirstResponder()
        }
        else if textField == textField1 {
            textField2.enabled = true
            textField2.becomeFirstResponder()
        }
        else {
            textField.resignFirstResponder()
        }

        return true
    }
}

运行方式如下:

enter image description here