2
Я использую приведенный ниже код для обнаружения слов, используемых в UITextView. Это прекрасно работает, но я хочу обнаружить некоторые специальные символы, например, ?
. ?
не отображается как часть слова при использовании UITextGranularityWord
, и я не могу заставить его отображаться при использовании UITextGranularityCharacter
.Обнаружение символов, используемых в UITextView
Как я могу обнаружить краны на отдельных специальных символах, таких как ?
?
-(NSString*)getWordAtPosition:(CGPoint)pos inTextView:(UITextView*)_tv
{
//eliminate scroll offset
pos.y += _tv.contentOffset.y;
//get location in text from textposition at point
UITextPosition *tapPos = [_tv closestPositionToPoint:pos];
//fetch the word at this position (or nil, if not available)
UITextRange * wr = [_tv.tokenizer rangeEnclosingPosition:tapPos withGranularity:UITextGranularityWord inDirection:UITextLayoutDirectionRight];
if ([_tv textInRange:wr].length == 0) {//i.e. it's not a word
NSLog(@"is 0 length, check for characters (e.g. ?)");
UITextRange *ch = [_tv.tokenizer rangeEnclosingPosition:tapPos withGranularity:UITextGranularityCharacter inDirection:UITextLayoutDirectionRight];
NSLog(@"ch range: %@ ch text: %@",ch, [_tv textInRange:ch]); // logs: ch range: (null) ch text:
if ([[_tv textInRange:ch] isEqualToString:@"?"]) {
return [_tv textInRange:ch];
}
}
return [_tv textInRange:wr];
}
Вы можете попробовать это: http://stackoverflow.com/questions/5091851/how-to-detect-space -and-special-characters-like-etc-in-text-of-text – Nico
Я не уверен, как это сработает - если моя функция для возврата десантированного символа не может вернуть '?', как можно Я использую 'NSCharacterSet'? Я не хочу проверять, существует ли '?' В строке, но только в том случае, если она существует в местоположении, которое пользователь удаляет. – glenstorey
Хорошо, что я сожалею. Вы хотите получить персонажа, который используется в вашем текстовом элементе, не так ли? Я проверил ваш код, который работает для «?», Вы можете использовать тот же способ, чтобы протестировать весь специальный символ? – Nico