0

テキストビュー用のカスタム スクローラーを作成し (スクロールビューの awakeFromNib メソッドで開始)、アプリケーションの起動時にスクロールバーを表示するかどうかをユーザーが選択できるようにしたいと考えています。問題は、作成直後に非表示にし、スクロールビューのスクローラーに設定しても、スクローラーが常に表示されることです。奇妙なことに、イベントがトリガーされた後にスクローラーを非表示にしようとすると (たとえば、設定のチェックボックスをクリックして)、スクローラーが適切に非表示および表示されます。私は何を間違っていますか?どんな助けでも大歓迎です!

4

2 に答える 2

3

奇妙なことに、スクロール ビューにカスタム スクローラーを追加する前に、 を使用する必要がありますsetHasVerticalScroller:YES。そうしないと、2 本指のスクロール ジェスチャを使用してスクロールできません。次に、ユーザーがスクロールバーを表示したくない場合はsetHasVerticalScroller:NO、ドキュメントの windowControllerDidLoadNib メソッドで使用する必要があります。スクロールビューのawakeFromNibメソッドにスクロールバーを追加した直後に使用すると機能しません。まあ、少なくとも今はうまくいくようです!

于 2011-06-27T09:43:40.323 に答える
0

私は常にIBを使用してスクロールバーを設定し、そのうちの1つを抑制したい場合は次の行を使用しました:

[self.aScrollView setHasHorizontalScroller:NO]; // so only the vertical scrollbar is active

「hidden」プロパティを使用するのではなく、ユーザーが選択した場合は、後で awakeFromNib でその行を YES に設定してみてください。

PS IB に追加された NSTextView は常に NSScrollView に埋め込まれ、スクロールバーを制御するのはスクロールビューです。したがって、上記が機能しない場合は、テキストビューのスーパービューで setHasWhateverScroller を呼び出してみてください。

[[[aTextView superview] superview] setHasHorizontalScroller:NO];

「認識されないセレクター」エラーが発生した場合は、スーパービューを NSScrollView に明示的にキャストしてみてください (これは、スーパービューが実際に NSScrollView のインスタンスである場合にのみ機能します)。

[(NSScrollView *)[[aTextView superview] superview] setHasHorizontalScroller:NO];
于 2011-05-14T19:43:26.720 に答える