iOS: выделять орфографические ошибки, но отключать предложения? - PullRequest
0 голосов
/ 19 ноября 2011

Мое приложение реализует пользовательскую проверку орфографии с собственным окном и рабочим процессом, отличным от встроенной проверки орфографии в iOS. Поэтому я отключил коррекцию в главном окне ввода текста. Это отключает встроенные предложения, а также выделение слов с ошибками.

Есть ли способ сохранить выделение, но отключить предложения?

Ответы [ 2 ]

0 голосов
/ 17 мая 2012

Тебе придётся катиться самостоятельно. Вот грубая (iOS 5 и более поздние версии):

Перетащите вид с прозрачным фоном поверх текстового представления.

Найдите видимый диапазон текста следующим образом:

- (NSRange)visibleRangeOfTextView:(UITextView *)textView {
    CGRect bounds = textView.bounds;
    UITextPosition *start = [textView characterRangeAtPoint:bounds.origin].start;
    UITextPosition *end = [textView characterRangeAtPoint:CGPointMake(CGRectGetMaxX(bounds), CGRectGetMaxY(bounds))].end;
    return NSMakeRange([textView offsetFromPosition:textView.beginningOfDocument toPosition:start],
                   [textView offsetFromPosition:start toPosition:end]);
}

Поиск слов с ошибками в этом диапазоне.

Найдите их экранные координаты, используя метод firstRectForRange UITextView.

Выделите так, как вы хотите.

Решение о том, когда сделать это, оставлено для ученика:)

0 голосов
/ 19 ноября 2011

Вы можете использовать приведенный ниже код, чтобы проверить, правильно ли напечатано слово или нет, и если неправильно, выделите это слово

первый импорт

#import <UIKit/UITextChecker.h>

в вашем файле

-(BOOL)isDictionaryWord:(NSString*)word {
    UITextChecker *checker = [[UITextChecker alloc] init];
    NSLocale *currentLocale = [NSLocale currentLocale];
    NSString *currentLanguage = [currentLocale objectForKey:NSLocaleLanguageCode];
    NSRange searchRange = NSMakeRange(0, [word length]);
    NSRange misspelledRange = [checker rangeOfMisspelledWordInString:word range: searchRange
startingAt:0 wrap:NO language: currentLanguage ];
    return misspelledRange.location == NSNotFound;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...