У меня есть функция, определяющая, должна ли форма быть отправлена путем проверки возвращенного bool.Можно ли использовать метод UITextFieldDelegate внутри функции в swift?
Функция:
func signUpViewController(signUpController: PFSignUpViewController!, shouldBeginSignUp info: [NSObject : AnyObject]!) -> Bool {
var informationComplete = true
// loop through all of the submitted data
for (key, value) in info {
let fieldValue: AnyObject? = value
if (!fieldValue || fieldValue?.length == 0) { // check completion
informationComplete = false;
break;
}
}
// is this possible
textFieldDidEndEditing(textField: UITextField?) {
}
// Display an alert if a field wasn't completed
if (!informationComplete) {
var alert = UIAlertController(title: "Error", message: "Make sure you fill out all of the fields!", preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: nil))
self.presentViewController(alert, animated: true, completion: nil)
}
PFUser.logOut()
return informationComplete;
}
тока проверить наличие пустых полей, но нужно проверить для других вещей, таких как объем текста в текстовом поле, правильно ли введен адрес электронной почты.
Я хочу использовать textFieldDidEndEditing для проверки содержимого текстового поля после его останова. В основном я буду использовать инструкцию if, чтобы выполнить проверку, а затем отобразить сообщение об ошибке, а также установить для параметра informtionComplete значение false, чтобы форма не была отправлена с ошибками. Я бы тоже отключил кнопку отправки.
Out сторона выше функции я бы сделать что-то вроде этого:
override func textFieldDidEndEditing(textField: UITextField!) {
if textField == self.signUpView.usernameField {
var length = countElements(self.signUpView.usernameField.text!)
if length < 2 {
var alert = UIAlertController(title: "Error", message: "Your company can only have a minimum of 2 characters!", preferredStyle: UIAlertControllerStyle.Alert)
alert.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: nil))
self.presentViewController(alert, animated: true, completion: nil)
self.signUpView.signUpButton.enabled = false
} else {
self.signUpView.signUpButton.enabled = true
}
}
if textField == self.signUpView.passwordField {
}
if textField == self.signUpView.emailField {
}
}
Может быть похоже делается в функции или мне нужно создать экземпляр вары, как я бы в Objective-C и установить informationComplete var из-за пределов функции signUpViewController?
Зачем вам нужно реализовать метод делегата текстового поля внутри другого метода? – Hokage