Swift 2.0 +
Прежде всего создайте класс для этого процесса. Давайте назовем это StringValidator.swift.
Затем просто вставьте в него следующий код.
import Foundation
extension String {
func containsCharactersIn(matchCharacters: String) -> Bool {
let characterSet = NSCharacterSet(charactersInString: matchCharacters)
return self.rangeOfCharacterFromSet(characterSet) != nil
}
func containsOnlyCharactersIn(matchCharacters: String) -> Bool {
let disallowedCharacterSet = NSCharacterSet(charactersInString: matchCharacters).invertedSet
return self.rangeOfCharacterFromSet(disallowedCharacterSet) == nil
}
func doesNotContainCharactersIn(matchCharacters: String) -> Bool {
let characterSet = NSCharacterSet(charactersInString: matchCharacters)
return self.rangeOfCharacterFromSet(characterSet) == nil
}
func isNumeric() -> Bool
{
let scanner = NSScanner(string: self)
scanner.locale = NSLocale.currentLocale()
return scanner.scanDecimal(nil) && scanner.atEnd
}
}
Теперь сохраните класс .....
использование ..
Теперь перейдите к вашему классу viewController.swift и сделайте выходы вашего текстового поля как ..
@IBOutlet weak var contactEntryTxtFld: UITextField! //First textfield
@IBOutlet weak var contactEntryTxtFld2: UITextField! //Second textfield
Теперь перейдите к методу shouldChangeCharactersInRange текстового поля и используйте его следующим образом.
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
if string.characters.count == 0 {
return true
}
let latestText = textField.text ?? ""
let checkAbleText = (latestText as NSString).stringByReplacingCharactersInRange(range, withString: string)
switch textField {
case contactEntryTxtFld:
return checkAbleText.containsOnlyCharactersIn("0123456789") && prospectiveText.characters.count <= 5
case contactEntryTxtFld2:
return checkAbleText.containsOnlyCharactersIn("0123456789") && prospectiveText.characters.count <= 5
default:
return true
}
}
Не забудьте установить протокол делегирования / методы текстовых полей.
Позвольте мне объяснить это ... Я использую простой процесс расширения строки, который я написал внутри другого класса. Теперь я просто вызываю эти методы расширения из другого класса, где они мне нужны, добавляя проверку и максимальное значение.
Особенности ...
- Устанавливает максимальный лимит определенного текстового поля.
- Устанавливает тип принятых ключей для конкретного текстового поля.
Типы ...
содержитOnlyCharactersIn // Принимает только символы.
containsCharactersIn // Принимает комбинацию символов
doesNotContainsCharactersIn // Не будет принимать символы
Надеюсь, это помогло ....
Спасибо ..