1

ダースの scrollViews を持つココア アプリケーションがあります。特に、実際にある種の「イースターエッグ」を配置する場合は、伸縮性が気に入っています (本アプリのアップル ロゴのようなものです。下にスクロールすると、アップル ロゴが表示されます)。

私の問題は、実際のコンテンツ領域を超えて公開されるコンテンツの量を制限する必要があることです。特にマジックマウスでスクロールすると、弾力でスクロールの中身が全部消えてしまう!スクロールを放すまで、スクロールは元に戻ります。

ここで、弾力性を特定のマージンに制限したいと思います。どうやって?

4

1 に答える 1

3

NSScrollView は、一度に表示できる/表示できるものよりも大きな「キャンバス」を持つビューを管理します。したがって、別の動作が必要な場合:

  • チェック(void)setHorizontalScrollElasticity:しますが、それはあなたが望むものではありません。(一定量の弾力性を許可したい)
  • NSScrollView をサブクラス化して、必要な動作を実装します。
  • 独自のクラスをゼロから作成します (イベントを処理したいので、NSResponder から継承するもの)。

たとえば、私はかつて世界地図プログラムを書いたことがありますが、地図を水平軸上で永遠にループさせる必要がありました。サブクラス化された NSView を使用して手動でスクロールを管理しました。(現在、コードにアクセスできません)

熟考すべきこと: あなたの理由は理解できますが、それについて言及したかっただけです。この動作は、ユーザーが想定している必要があります。ボタンのように見える場合は、out のように動作する必要があります。現在、スクロールビューには弾力性があるため、勢いでスクロールするとき (ユーザーが触れなくなったとき)、最後に到達しても突然停止することはありません... これはユーザーにとって耳障りです。



NSScrollview をサブクラス化する場合- (void)scrollWheel:(NSEvent *)、contentView の境界をオーバーライドして検出し、特定の値に制限します。次の行の周りの何か:

- (void)scrollWheel:(NSEvent *)event
{
    [super scrollWheel:event];
    if (self.contentView.bounds.origin.y > SomeConstant)
         /* cap the value */
}
于 2012-04-25T18:27:03.183 に答える