Siri Dictation обходит UITextView: shouldChangeTextInRange Delegate
Я использую (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:)
Это отлично работает для меня.