使用者已開始與文字欄位互動時的操作
對於 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。