4

問題が発生してUIScrollViewいます。バグかどうかはわかりませんが、ズーム可能/パン可能な画像を使用して実装するUIScrollViewと発生します。delegate

まず、画像をパンすると、contentOffsetが整数以外の値(.5)になる可能性があります。確かzoomScalesに、画像を端までパンすると、このために端に到達するのが半ピクセル恥ずかしがります。

これは非常に小さなことですが、私のアプリでは、画面上でオブジェクトをドラッグする必要があります。オブジェクトを隅にドラッグすると、それに気付くことができます。

私は問題を修正してそれを作るために以下を実装しましたので、それcontentOffsetは完全な価値でなければなりません:

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset
{
    if (targetContentOffset->x != ceilf(targetContentOffset->x))
    {
        if (velocity.x > 0)
        {
            targetContentOffset->x = ceilf(targetContentOffset->x);
        }
        else 
        {
            targetContentOffset->x = floorf(targetContentOffset->x);
        }
    }

    if (targetContentOffset->y != ceilf(targetContentOffset->y))
    {
        if (velocity.y > 0)
        {
            targetContentOffset->y = ceilf(targetContentOffset->y);
        }
        else 
        {
            targetContentOffset->y = floorf(targetContentOffset->y);
        }
    }
}

ただ、物件targetContentOffsetとは全然違うのでうまくいかないようです。contentOffset

誰かがa)このバグが発生している理由またはb)上記のデリゲートメソッドまたは他の手段を使用してそれを修正する方法はありますか?

4

1 に答える 1

2

あるいは、このメソッドの実装も機能する場合があります。

-(void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView

以下のコメントを見ると、複数のメソッドを実装する必要があるかもしれません。上記のものまたは他の回答投稿に記載されているものは、エッジの状態に触れていることを確認するために、速度が低下して停止するときと、速度ポイントに対してすでに処理する必要がある方法について説明しています。

于 2012-06-01T22:10:36.227 に答える