13

(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)へのすべての文字入力に対してリアルタイムの正規表現検証を実行するために使用しますUITextView

これはうまく機能し、無効な文字を含む可能性のある貼り付けられたテキストも処理します。

しかし、Siri はそのようなことを気にかけないようで(void)textViewDidChange:(UITextView *)theTextView、デリゲートをバイパスし、shouldChangeTextInRange検証チェックを回避して、そのディクテーションを に直接ダンプします。

これはセキュリティ上の欠陥のように思え、他のすべての入力チャネルがたどる API フローを壊します。

Siri Dictation を呼び出しに対応させる方法について何か考えはありshouldChangeTextInRangeますか?

4

1 に答える 1

0

これが答えだと思います....もし:

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

が呼び出された場合、それはユーザー入力です。したがって、「shouldChange」がチェックされたかどうかを覚えておくために、そこに BOOL を入れます。

次に、マイク入力は次を呼び出します。

-(void)textViewDidChange:(UITextView *)textView

ここで BOOL をチェックして、NO の場合はマイク入力です。

(textViewDidChange の最後に BOOL = NO を作成します:)

それは私にとってとてもうまくいきます。

于 2015-03-26T00:40:19.147 に答える