У меня есть UITextField
, в который пользователи будут вводить символы. Это так же просто, как вернуть фактическую длину? Когда строка содержит A -Z 1 -9 символов, она работает так, как ожидалось, но любые эмодзи или специальные символы учитываются дважды.
В самом простом формате для некоторых специальных символов, таких как смайлики, выделяется 2 символа.:
NSLog(@"Field '%@' contains %i chars", myTextBox.text, [myTextBox.text length] );
Я пробовал перебирать каждый символ с помощью characterAtIndex
, substringFromIndex
и т. д., но ничего не вышло.
Согласно ответу ниже, точный код, используемый для подсчета символов (надеюсь, что это правильный подход, но он работает..):
NSString *sString = txtBox.text;
__block int length = 0;
[sString enumerateSubstringsInRange:NSMakeRange(0, [sString length])
options:NSStringEnumerationByComposedCharacterSequences
usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
length++;
}];
NSLog(@"Total: %u", length );