13

我用来(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)对输入到UITextView.

这很好用,甚至可以处理可能包含无效字符的粘贴文本。

但 Siri 似乎并不关心这些事情,而是将它的听写直接转储到(void)textViewDidChange:(UITextView *)theTextView,绕过shouldChangeTextInRange委托并避免验证检查。

这对我来说似乎是一个安全漏洞,并破坏了所有其他输入通道遵循的 API 流程。

关于如何让 Siri 听写符合呼叫的任何想法shouldChangeTextInRange

4

1 回答 1

0

我认为这就是答案....如果:

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

被调用然后它是一个用户输入。所以放一个 BOOL 来记住是否检查了“shouldChange”。

然后,麦克风输入将调用:

-(void)textViewDidChange:(UITextView *)textView

在这里检查你的 BOOL,如果它不是,那么它是一个麦克风输入。

(使 BOOL = NO 在 textViewDidChange 的末尾:)

这对我很有用。

于 2015-03-26T00:40:19.147 回答