1

プログラムでテキストを追加するだけの狭いUITextView(高さ約1行)ので、textボタンをクリックするときにそのプロパティを設定します。また、カーソル位置を手動で処理selectedRangeし、テキストの変化に合わせてを設定します。テキストが1行しかない限り、すべてうまく機能します。

2行以上のテキストがあり、最初の行にテキストを挿入しようとすると、テキストは正しく挿入され、カーソル位置は正しい位置にありますがUITextView、一番下までスクロールします。次に、上部に別のテキストを追加すると、「正しい」位置までスクロールします。次に、このパターンは、最後以外の行に入力されたすべてのテキストに対して繰り返され、ボタンが押されるたびにUITextViewが上下にスクロールします。

UITextView scrollRangeToVisible:また、新しいテキストを設定した後、selectedRangeプロパティを引数として渡して呼び出してみました。それもうまくいきませんでした。

selectedRangeを設定してから0.5秒遅れてようやく設定してみましたtextUITextViewその後、正常に機能しますが、最初に0.5秒間下にスクロールした後でのみ機能します。これはsetText、UITextViewのメソッドが何らかの形で非同期であり、を設定selectedRangeまたは呼び出した後に完了しscrollRangeToVisible、UITextViewを目的の方法に再調整することを示しているようです。

何が起こっているのか、どうすれば問題を回避できるのか、誰か教えてもらえますか?

ありがとう!

4

2 に答える 2

0

sの自動スクロール動作は、UITextField煩わしく、利用するのが難しい場合があります。

ユーザーがテキストを手動で編集する必要がありますか?そうでない場合は、複数行を使用しUILabelます。

はいの場合は、マルチラインも使用して、ユーザーがタップUILabelしたときにオンザフライで交換します。UITextViewに戻しますdidEndEditing。この手法は、テーブルビューでうまく機能しました。

于 2013-03-25T21:32:22.050 に答える
0

問題を解決しました!カスタム入力ビューを作成する迷路から始めたとき、私は実装を開始UITextInputし、UITextInputプロトコルが多くの興味深いメソッドを宣言していることに気付きました。そして素晴らしいのは、UITextViewそのプロトコルを実装していることです。したがって、直接のAPIリファレンスには含まれていなくても、のすべてのメソッドをUITextView呼び出すことができます。たとえば(プロトコルから)および。彼らは、プログラムでを操作することをはるかに柔軟にしました。これが他の誰かにも役立つことを願っています!UITextInputUITextViewinsertText:UIKeyInputreplaceRange:withText:UITextView

于 2013-03-27T08:57:29.097 に答える