Диктант Siri обходит UITextView:shouldChangeTextInRange Делегат

Я использую (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *) выполнить проверку регулярного выражения в режиме реального времени для каждого ввода символов в UITextView,

Это хорошо работает и даже обрабатывает вставленный текст, который может содержать недопустимые символы.

Но Сири, кажется, не заботится о таких вещах и бросает свою диктовку прямо в (void)textViewDidChange:(UITextView *)theTextViewв обход shouldChangeTextInRange делегировать и избегать проверочных проверок.

Это кажется мне недостатком безопасности и нарушает поток API, который следует за каждым другим входным каналом.

Любые мысли о том, как я могу заставить Siri Dictation соответствовать требованиям shouldChangeTextInRange?

1 ответ

Я думаю, что это ответ.... если:

 - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

называется тогда это пользовательский ввод. Поэтому поместите туда BOOL, чтобы запомнить, был ли установлен флажок 'shouldChange'.

затем на вход микрофона позвонят:

-(void)textViewDidChange:(UITextView *)textView

проверьте вашу BOOL здесь, и если это НЕТ, то это микрофонный вход.

(сделайте BOOL = NO в конце textViewDidChange:)

Это прекрасно работает для меня.

Другие вопросы по тегам