2

私は UITextView を使用しており、View Controller に UITextInputDelegate を追加しました。textDidChange および dictationRecordingDidEnd メソッドを実装しました。textDidChange と dictationRecordingDidEnd は呼び出されません。助けてください。

MyViewController.h ファイル内

@interface MyViewController : UIViewController <UITextViewDelegate, UITextInputDelegate>
{

}

MyViewController.m ファイル内

- (void) textDidChange:(id<UITextInput>)textInput
{

}

- (void)dictationRecordingDidEnd
{

}
- (void)dictationRecognitionFailed
{
    textViewResults.text = @"Dictation Failed";
}
4

3 に答える 3

2

私はこれと同じ問題を抱えていました...メソッドが本来のように呼び出されないようです(5.1より前はまったく呼び出されません)。入力モードが変更されるたびに送信される通知に気付きました。

UITextInputCurrentInputModeDidChangeNotification

(NSNotificationCenterで)それをリッスンしてから呼び出す場合:

[[UITextInputMode currentMode] performSelector:@selector(identifier)];

現在の入力モードの NSString を取得します。そのロジックに従うと、 @"dictate" から別のものに変化すると、ディクテーション部分が終了したことがわかります。(テキストの変更はまだ処理されていない可能性がありますが、私はそれをすべて試していません)。

http://developer.apple.com/library/ios/#documentation/uikit/reference/UITextInputMode_Class/Reference/Reference.html

奇妙なことに、UITextInputMode はプライベートではありませんが、メソッドによって返されるオブジェクトにはパブリック アクセサーがありません... (したがって、必要な文字列を提供する @selector(identifier) )...これがフラグになるとは思わないでくださいApple の拒否のためですが、購入者は注意してください。

于 2012-10-17T22:58:26.887 に答える
2

UITextInputDelegate プロトコルを使用する必要はないと思いますが、代わりに UITextInput プロトコルを使用してください。

于 2012-10-15T23:59:04.243 に答える