1

私はこのiPhone開発にかなり慣れていませんが、これまでのところかなり良いアプリを構築しましたが、私の人生では解決できないように見えるこの問題に遭遇しました.

基本的にアプリはソーシャルサイト向けのチャットアプリです。現在UITextboxである入力ボックスを除いて、すべてが100%機能しています。これは問題なく動作しますが、ボックスを拡大してスクロール付きの複数行の UITextbox にしたいと考えています。UITextbox を UITextview に置き換えましたが、すべて問題ありません。ユーザーがテキストを入力すると、UITextview が拡張されますが、ちょっとした問題が 1 つあります。

UITextview がフォーカスされると、カーソルとそこにあるテキストが表示されなくなります。デフォルトで 2 行を表示するように設定した UITextview は、テキストの高さがこれらの 2 行を超えると、ボックスが大きくなり (実際にそうなります)、テキストが上にスクロールされたままになり、自分が何であるかを確認できるようになります。タイピング。iPhone の SMS アプリを見ると、これはまさに私が望んでいる動作です。

知恵の言葉は大歓迎です。

4

3 に答える 3

3

Blaenk は完璧に答えたと思います (それが私の答えになるはずでした)。ただし、Three20 をプロジェクトに含めたくない場合に備えて (ちょっと大きいので)、TTTextEditor からの関連コードを以下に示します。テキストビューを展開しているどこからでもこれを呼び出すことができるはずです。

- (void)scrollContainerToCursor:(UIScrollView*)scrollView {
  if (_textView.hasText) {
    if (scrollView.contentSize.height > scrollView.height) {
      NSRange range = _textView.selectedRange;
      if (range.location == _textView.text.length) {
        [scrollView scrollRectToVisible:CGRectMake(0,scrollView.contentSize.height-1,1,1)
          animated:NO];
      }
    } else {
      [scrollView scrollRectToVisible:CGRectMake(0,0,1,1) animated:NO];
    }
  }
}
于 2009-11-10T01:27:30.147 に答える
3

three20をチェックしてください:

Three20 は、フォト ビューアーなどの iPhone UI クラスと、HTTP ディスク キャッシュなどの一般的なユーティリティのコレクションです。Three20 は、これまでで最もダウンロード数の多い iPhone アプリの 1 つである Facebook iPhone アプリから派生したものです。

具体的には、 TTTextEditorを見てみましょう:

TTTextEditor は、入力すると自動的に高さが大きくなる UITextView です。私はこれを Facebook チャットにメッセージを入力するのに使用しており、Apple の SMS アプリのエディターと同様に動作します。

プロジェクトに three20 を追加する方法については、こちらを参照してください。

于 2009-11-10T00:59:33.307 に答える
0

そのためだけに UITextView のサブクラスを作成しました。

https://github.com/MatejBalantic/MBAutoGrowingTextView

これは、自動レイアウト ベースの軽量 UITextView サブクラスであり、ユーザー入力のサイズに基づいて自動的に拡大および縮小し、最大および最小の高さによって制限できます。すべてコードを 1 行も書かずに実行できます。

このクラスは、主に Interface builder で使用するために作成されており、自動レイアウトでのみ機能します。

于 2014-05-16T13:28:59.280 に答える