2014-09-03 3 views
2

Что я хочу сделать, это установить в логике if значение true для true, если в текстовом поле не содержится ничего, кроме букв, цифр, тире и пробелов.Как проверить значения UITextField для определенных типов символов, например. Письма или номер?

Затем для поля электронной почты проверьте действующее письмо.

Это, как я проверяю по длине:

if countElements(textField.text!) < 2 || countElements(textField.text) > 15 { 
     errorLabel.text = "Name must have between 2 and 15 characters." 
     self.signUpView.signUpButton.enabled = false 
    } else { 
     errorLabel.text = "" 
     self.signUpView.signUpButton.enabled = true 
    } 

Это если оператор находится внутри метода textFielddidEndEditing UITextFieldDelegate. У меня есть ощущение, что мне придется использовать некоторую форму регулярного выражения, чтобы проверить действительный адрес электронной почты.

Имеет смысл использовать регулярное выражение для проверки поля, только содержит символы, которые я разрешаю, и возвращаю логическое значение, которое скажет мне, если текстовое поле содержит запрещенные символы, поэтому я могу показать сообщение об ошибке.

Есть ли какой-то предпочтительный способ сделать это? В объекте-с я использовал NSCharacterSet, но не уверен, как это реализовать.

Спасибо за ваше время

ответ

1

Это, как я сделал это в конце концов.

override func textFieldDidEndEditing(textField: UITextField) { 

     let usernameField = self.signUpView.usernameField.text as NSString 
     let alphaNumericSet = NSCharacterSet.alphanumericCharacterSet() 
     let invalidCharacterSet = alphaNumericSet.invertedSet 
     let rangeOfInvalidCharacters = usernameField.rangeOfCharacterFromSet(invalidCharacterSet) 
     let userHasNameInvalidChars = rangeOfInvalidCharacters.location != NSNotFound 

     if textField == self.signUpView.usernameField { 

      if userHasNameInvalidChars { 
       errorLabel.text = "Letters and numbers only please!" 
       self.signUpView.signUpButton.enabled = false 
       // do more error stuff here 
      } else { 
       self.signUpView.signUpButton.enabled = true 
      } 
     } 
    } 

Благодаря блоге: http://toddgrooms.com/2014/06/18/unintuitive-swift/