0

ユーザーインターフェイスに問題があります。いくつかのコントロール(つまり、読み取り専用NSTextField(複数行のラベル)とNSTokenField)に含まれるすべてのテキストを表示させたいのですが、これは大きく異なる可能性があります(数語から数行)。

中に埋め込むことを考えましたNSScrollViewが、目的を達成できなかったので、これでは不十分かもしれません...

誰かがこの問題について私を助けることができますか?

ありがとうございました

編集:私は画像を追加しました。

UI

たぶん、スクロールバーは正しい解決策ではありません。画像でわかるように、「単純な」attribute1フィールドがあり、次に多くのテキストを含む2番目のフィールド(および表示する必要のあるテキストがさらにある)、および多くのテキストを含むトークンフィールドがあります。文章。

2つの選択肢があります(まだ実装方法がわからない場合でも..):

  • フィールドの高さを大きくします(ただし、問題を延期しているだけです。ウィンドウが大きくなりすぎてウィンドウも大きくなる必要がある場合はどうなりますか?
  • それらをスクロールビューに埋め込みます(その場合はスクロールバーを表示して、ユーザーがもっと読むべきものがあることを認識できるようにします)。この2番目の方法の方が良いと思いますが、スクロールビューにフィールドを埋め込むだけでは問題は解決しなかったので、プログラムで何かを実装する必要があるかどうか(およびサブクラス化する必要があるかどうかNSView)を尋ねていました...

EDIT2:まだ問題があります:制約として「サイズ> =最小値」を設定すると、テキストフィールドは正しく拡大します。もちろんスクロールビューはありません。それなら、NSScrollViewテキストに埋め込むと、次のようになります。再びクリップされます(そしてスクロールビューはスクロールしません)...

EDIT3:私は問題を表示しようとするサンプルプロジェクトを添付します(私のメインプロジェクトの他のすべてのものなしで) http://www.filedropper.com/testtextfield

4

3 に答える 3

1

あなたの要件は、NSTextField と NSTokenField を持つカスタム コントロールを作成することです。

あなたができることは、NSViewを作成し、それらの両方をそれらに埋め込み、NSScrollViewでそれらを表示することです。

于 2013-03-18T10:56:45.980 に答える
0

何をしたいかにもよりますが、Anoopの提案は、NSView内にあるにそれらを埋め込むのがおそらく良いでしょうNSScrollView。ただし、スクロールビュー内の各フィールドの幅をスクロールビューと同じにし、高さを動的に変更する場合はNSViewFrameDidChangeNotification、スクロールビューでをリッスンし、preferredMaxLayoutWidth各フィールドのを変更する必要がNSTextFieldあります。スクロールビューのNSTokenField幅に一致します。おそらく、包含をサブクラス化しNSViewて、通知をリッスンさせることをお勧めします。

編集:

これで発生している具体的な問題はわかりませんが、問題を分類する方法は次のとおりです。

NSView1)コンテナビューとなるサブクラスを作成します。

2)コンテナビューのインスタンスにテキストビューを埋め込み、そのコンテナビューをNSScrollView

3)テキストビューには、スーパービュー(おそらく0ですが、うまくいくものは何でも)に対する前後のスペース制約と、スタック構成にするための相互およびスーパービューに対する上下の制約が必要です。

4)コンテナビューサブクラスで、NSViewFrameDidChangeNotificationそれを含むスクロールビューに登録し、通知を受信し-setPreferredMaxLayoutWidth:たら、NSScrollViewの幅に一致するように各テキストフィールドに登録します。

于 2013-03-18T11:29:04.990 に答える