1

カスタム NSView サブクラスの親である NSScrollView があります。サブクラスは、サブビューcontentSizeをレイアウトするために NSScrollView のメソッドを使用します。

問題は、最初の起動時に NSScrollView が contentSize を間違って報告することです。サイズが本来あるべきサイズ (スクローラーの幅) よりも 15 ピクセル大きいと報告されます。したがって、スクローラーの幅を考慮せずに contentSize を返しているようです。ただし、スクロール ビューのフレームを (サイズ変更などによって) 調整するとすぐに、コンテンツ サイズが適切に報告されます。最初の起動時に問題があるようです。

これはバグとして報告する必要がありますか?これに対する適切な解決策はありますか? レイアウト中にチェックを実行してメソッドが初めて呼び出されたかどうかを確認する汚い方法を使用して、コンテンツ サイズから 15px を差し引くこともできますが、もっと良いものがあれば、それはありがたいです。

4

3 に答える 3

2

同様の問題に遭遇したばかりで、それを解決した方法は、スクロール ビューのコンテンツ ビュー (この場合はカスタム NSView) で通知 NSViewFrameDidChangeNotification を観察することでした。

この通知は、スクロール ビューにスクロール バーが追加/削除されたときにトリガーされ、その時点でビューのコンテンツを再配置できます。

于 2011-08-22T06:00:02.627 に答える
0

コンテンツのサイズはいつ確認しますか? ビューがnibファイルからインスタンス化されているとき、またはnibが完全に解凍された後に発生していますか?

私がおそらく行うことは、-viewDidMoveToWindow:またはからレイアウトメソッドを呼び出すことです-awakeFromNib

于 2010-11-20T02:11:34.803 に答える
0

スクロールバーを自動的に非表示/表示するオプションを使用していますか?

于 2013-11-24T00:05:13.417 に答える