1

Snow Leopard と Lion の両方で適切に表示されるように、InterfaceBuilder (XCode 4) で NSScrollView を設定する際に問題が発生しました。

プログラムを使用するときにアクセスする必要があるコントロールを含む 4 つの NSView があります。ビューを NSScrollView のビュー内に配置しました。ウィンドウが小さくなり、すべてを表示できない場合、垂直スクロール バーが表示されます。[customView isFlipped] == YES(ビューは、唯一のカスタマイズとして返されるカスタム ビューです。)

NSScrollView は、プログラム ウィンドウの高さに合わせて垂直方向に自動サイズ設定されるように設定されています。スクロール ビュー内のカスタム ビューは、NSScrollView の幅で水平方向に自動サイズ設定されるように設定されています。NSScrollView は垂直スクロール バーを表示し、コンテンツ全体が表示されると自動的に非表示にします。

この構成では、すべてが Snow Leopard でうまく機能します。しかし、Lion を使用すると、垂直スクロール バーがカスタム ビューの上に表示されず、右側の不透明な灰色のバー内に表示されます。これは、ウィンドウが十分に大きいため、または使用されていないときに Lion がスクロール バーを非表示にするため、スクロール バーが非表示になっている場合でも消えません。カスタムビューの幅全体にまたがる要素がいくつかあり、ウィンドウの境界から15ポイント離れているため、これは本当に専門的ではないように見えます。カスタム ビューの幅を NSScrollView の幅 (1 つの NSScroller の幅に対して +15pt) に設定すると、Lion でこれを正しく動作させることができますが、垂直スクロール バーが表示されます。両方のシステムで正しく見えるようにする方法はありますか?

Snow Leopard 10.6 SDK と Leopard 10.5 を最小 OS としてコンパイルしています。

4

1 に答える 1

2

[NSScrollerクラス]のpreferredScrollerStyleを確認、ゼロでない場合(実際には、NSScrollerStyleLegacyですが、SDK 10.6にはありません)、上記のようにビューを増やします。また、SDK 10.7でのみ追加されたため、スクローラークラスがそのセレクターに応答するかどうかを確認することを忘れないでください(そしてperformSelector:で呼び出します)。または、isCompatibleWithOverlayScrollersをオーバーロードするNSScrollerのカスタム子孫を使用して、falseを返すことができます。ライオンでも15pt幅のレガシースクローラーがあります。

于 2011-08-24T12:19:23.427 に答える