15

SDK 10.7 をデプロイ ターゲットとして使用する Mac OS X アプリに取り組んでいます。NSScrollView には、画像サムネイルの水平方向のリストが含まれています。ScrollView の中央にあるサムネイルは、ScrollView の下にフルサイズで表示される選択された画像を示します。これは Finder Cover-Flow と非常によく似ていますが、アプリ内の画像は流れず、スクロールするだけです。

サムネイルが正確に中央にある場合にのみスクロールが停止するように制限したいと思います。NSView メソッドのadjustScroll:は解決策ではありません。これにより、「スムーズな」スクロールが無効になり、ScrollView が 1 つのサムネイルから次のサムネイルにジャンプできるようになります。

ScrollView がスクロールを終了したことを知らせる何らかのアクション/コールバックが必要です。位置が問題ないかどうか (サムネイルが中央にある場合) を確認したり、前後にスクロールして最も近いサムネイルに移動したりできます。しかし、NSScrollView はそのようなコールバックを提供しません。

ScrollViewsのcontenViewのフレームの変化を観察してみました。フレームが変わるたびに、タイマーを開始します。タイマーが起動する前に再起動されない場合、スクロールが停止したと想定します。これはうまくいきません。スクロールが短時間だけ停止した場合 (たとえば、別のスワイプ ジェスチャを実行するために指を動かしたため)、次のスクロールが位置の修正を妨げます。

iOS で UIScrollView を使用すると、このタスクを問題なく解決できます。NSScrollViewの同様のページング機能は完璧なソリューションです。

これを解決する方法を知っている人はいますか?

どうもありがとうございました!

4

1 に答える 1