簡體   English   中英

textFieldShouldReturn無法快速將焦點從一個文本字段更改為另一個文本字段

[英]The textFieldShouldReturn is not working to change focus from one textfield to another in swift 3

當我從IOS中的鍵盤上單擊下一個按鈕時,我做了一切工作來將更改焦點從一個textField應用於另一個textField字段,但是它不起作用。

我將每個textField的委托從布局和代碼傳遞給ViewController 在此處輸入圖片說明

class ViewController: UIViewController, UITextFieldDelegate {

@IBOutlet weak var usernameTextField: UITextField!
@IBOutlet weak var passwordTextField: UITextField!

override func viewDidLoad() {
    super.viewDidLoad()
    usernameTextField.delegate = self
    passwordTextField.delegate = self

}


func textFieldShouldReturn(textfield: UITextField!) -> Bool
{

    textfield.resignFirstResponder()

    if (textfield == self.usernameTextField) {
        self.usernameTextField.becomeFirstResponder()

    }
    else if (textfield == self.passwordTextField) {
        self.passwordTextField.becomeFirstResponder()

    }

    return true


}

在這種情況下怎么了?

您正在使用Swift 3,並且UITextFieldDelegate方法的簽名已更改,因此您需要傳遞_作為第一個參數標簽。 因此,您的方法textFieldShouldReturn(_:)應該像這樣。

func textFieldShouldReturn(_ textField: UITextField) -> Bool { 
    if (textfield == self.usernameTextField) {
         self.passwordTextField.becomeFirstResponder()
    }
    else {
         textfield.resignFirstResponder()
    }
    return true
}

如果要調用textFieldShouldReturn,則必須這樣寫:

if (textfield == self.usernameTextField) 
{
    self. passwordTextField.becomeFirstResponder()
}

我已經根據您的要求進行了更新

嘗試使用:

func textFieldShouldReturn(textfield: UITextField!) -> Bool
{
    if (textfield == self.usernameTextField) {
        self.passwordTextField.becomeFirstResponder()
    }
    else if (textfield == self.passwordTextField) {
        textfield.resignFirstResponder()
    }
    return true
}

由於調用resignFirstResponderkeyboard被關閉。 它與textFieldShouldReturn的返回值textFieldShouldReturn 這就是為什么需要在令人滿意的條件下寫作。

Try this...

class ViewController: UIViewController, UITextFieldDelegate {
var usernameTextField: UITextField!
var passwordTextField: UITextField!

override func viewDidLoad() {
    super.viewDidLoad()
    usernameTextField.delegate = self
    passwordTextField.delegate = self
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

func textFieldShouldReturn(textfield: UITextField!) -> Bool
{

    if (textfield == self.usernameTextField) {
        self.usernameTextField.becomeFirstResponder()

    }
    else if (textfield == self.passwordTextField) {
        self.passwordTextField.resignFirstResponder()

    }

    return true
}

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM