В вашей функции checkValidation
вы берете textField
в качестве аргумента и извлекаете его свойство text
- но вы вызываете его в shouldChangeCharactersInRange
, и к этому моменту свойство text
все еще содержит старое значениетекста, до обновления (оно обновляется после возврата true
из этой функции).Сделайте вместо этого
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
//limit the size :
if([self checkValidation:string] == true)
{
return NO;
}
return YES;
}
- (BOOL)checkValidation:(NSString *)string
{
let stringWithGujaratiCharacters = "અ" // string with all Gujarati letters
let characterSet = CharacterSet(charactersIn: stringWithGujaratiCharacters).inverted // character set containing every character besides Gujarati letters
return string.rangeOfCharacter(from: characterSet) != nil // returns true if string contains characters other than Gujarati letters
}
Если вы просто не хотите разрешать латинские буквенно-цифровые символы, измените ваш characterSet
let characterSet = CharacterSet.alphanumerics