Диктант 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:)
Это прекрасно работает для меня.