2011-01-25 10 views
1

UITextView用の仮想キーボードを構築しています。すべて正常に動作し、私はキーボードを表示し、キーボードを削除するだけでなく、キーストロークを表示することができます。 "stringByReplacingCharactersInRange:withString"メソッドを使用して、新しいキーストロークをテキストビューに配置します。これは動作しますが、毎回文字列を置き換えるため、エントリポイントは文字列の最後に移動します。これはすべて理にかなっていますが、あまり使用することはできません。私はコードでチェックを行うことでこれを修正できますが、もっと良いものがあるかもしれません...iOSのカスタムキーボードからキー値をUITextViewにプッシュする方法

私の質問はこれです。手動でUITextViewのテキストプロパティの文字列を変更せずに、新しいキーをUITextViewに直接プッシュする方法はありますか?マニュアルでは、ターゲット/アクションを自分で管理しなければならないと述べていますが、私がコールするアクションを逃したのか不思議でした。アップルのデフォルトキーボードでは、タイピングをスムーズにするために必要なチェックの数が明白でない限り、キーストロークをオブジェクトに打ち込むという滑らかな方法が必要です。

ご協力いただきますようお願い申し上げます。 ありがとう、 Rob

答えて

1

まあ、私は何の反応も得られませんでした。だから私はそれを行う方法を考え出したので、それは妥当かつ単純です。選択した範囲を追跡することです。だから私がBackspaceを使いたいとき、私はこのテクニックを使います。

NSRange currentRange = self.myTextView.selectedRange; 
if (currentRange.length == 0) { 
    currentRange.location--; 
    currentRange.length++; 
} 
self.myTextView.text = [self.myTextView.text stringByReplacingCharactersInRange:currentRange withString:[NSString string]]; 
currentRange.length = 0; 
self.myTextView.selectedRange = currentRange; 

文字を入力する必要がある場合は、これが機能します。

NSRange currentRange = self.myTextView.selectedRange; 
self.myTextView.text = [self.myTextView.text stringByReplacingCharactersInRange:currentRange withString:someCharacter]; 
currentRange.location++; 
currentRange.length = 0; 
self.myTextView.selectedRange = currentRange; 

誰かがより良い方法を持っているなら、私はそれを聞きたいと思います。

ありがとう、
ロブ

関連する問題