使用者已開始與文字欄位互動時的操作

對於 Swift 3.1:

在第一個示例中,你可以看到在編寫時如何攔截使用者與文字欄位互動。類似地, UITextFieldDelegate 中有一些方法在使用者啟動並結束與 TextField 的互動時被呼叫。

為了能夠訪問這些方法,你需要符合 UITextFieldDelegate 協議,並且對於要通知的每個文字欄位,將父類指定為委託:

class SomeClass: UITextFieldDelegate {
    
    @IBOutlet var textField: UITextField!

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

}

現在,你將能夠實現所有 UITextFieldDelegate 方法。

要在使用者開始編輯文字欄位時收到通知,你可以實現 textFieldDidBeginEditing(_ :) 方法,如下所示:

func textFieldDidBeginEditing(_ textField: UITextField) {
    // now you can perform some action 
    // if you have multiple textfields in a class, 
    // you can compare them here to handle each one separately
    if textField == emailTextField {
        // e.g. validate email 
    } 
    else if textField == passwordTextField {
        // e.g. validate password 
    } 
}

同樣,如果使用者已結束與文字欄位的互動,則會收到通知,你可以使用 textFieldDidEndEditing(_ :) 方法,如下所示:

func textFieldDidEndEditing(_ textField: UITextField) {
    // now you can perform some action 
    // if you have multiple textfields in a class, 
    // you can compare them here to handle each one separately
    if textField == emailTextField {
        // e.g. validate email 
    } 
    else if textField == passwordTextField {
        // e.g. validate password 
    } 
}

如果要控制 TextField 是否應該開始/結束編輯,可以使用 textFieldShouldBeginEditing(_ :)textFieldShouldEndEditing(_ :) 方法,根據你所需的邏輯返回 true / false。