2009-07-09 5 views
32

UIScrollViewの減速を無効にする方法はありますか?UIScrollViewを無効にする

私はキャンバスをスクロールできるようにしたいと思いますが、ユーザーが指を離した後にキャンバスがスクロールし続けることは望ましくありません。

+1

なぜあなたはそれをしますか? –

+5

Adam、 デフォルトの動作を変更することはお勧めできませんが、特別なケースでは意味をなさないと思います。キャンバス上でオブジェクトを直接編集する機能を備えた拡張キャンバスを実装しています。このキャンバス編集モードに入るとき、私はオブジェクトが目に見える範囲にあるようにスクロールする距離を制限したいと思います。使用はさらにスクロールすることが許可されていますが、指で上に戻るでしょう。私はcontentSizeプロパティを認識していますが、成長するキャンバスに干渉します。 –

+2

私の状況では、賃借料を支払っていました。クライアントは、減速の動きを取り除くように依頼しました。 – Mark

答えて

60

これは、UIScrollViewデリゲートメソッドscrollViewWillBeginDeceleratingを使用して、コンテンツオフセットを現在の画面位置に自動的に設定することによって行うことができます。

  1. あなたはまだ行っていない場合は、あなたのUIScrollViewオブジェクトにデリゲートを割り当てます実装するに

    。デリゲートの.m実装ファイルで

  2. 、次のコード行を追加します。

    -(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{ 
        [scrollView setContentOffset:scrollView.contentOffset animated:YES]; 
    } 
    

出来上がりを!オートスクロールはこれ以上ありません。

+1

ニース。なぜ私は考えていないが、それはうまくいく。ありがとうございました! –

+0

マインは減速が終了した場所にジャンプして、どこから始めたのですか? – jjxtra

+0

これは正常に動作しています。 –

18

減速率を非常に高くすることができます。無限の速度で、それはすぐに止まるでしょう。これらの定数に料金を設定してみてください:

scrollView.decelerationRate = UIScrollViewDecelerationRateNormal; 

scrollView.decelerationRate = UIScrollViewDecelerationRateFast; 

速いまだUIScrollViewDecelerationRateFastがちょうどfloatとしてtypedefされ、あなたのために十分に速くはないので、あなたはそれを掛けることができる場合それをさらに高速化するためには、10倍程度の大きさでなければなりません。

+0

ありがとうございました! decelerationRateプロパティにはさまざまな値を試しましたが、減速が存在しないようにすることはできませんでした。すばやくスワイプすると、スクロールビューのスクロールはかなりの量になります。 –

+9

私の経験では、 'decelerationRate'プロパティは' UIScrollViewDecelerationRateNormal'と 'UIScrollViewDecelerationRateFast'というドキュメントに記述されている値にしか反応しません。 –

+0

これは私が探していたものです。ありがとう:) – codeburn

38

iOS 5.0以降では、setContentOffset:animated:を呼び出すよりも優れた方法があります。

あなた.mファイルにデリゲートメソッドを実装しscrollViewWillEndDragging:withVelocity:targetContentOffset:targetContentOffsetに現在のオフセットを割り当てる

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView 
        withVelocity:(CGPoint)velocity 
       targetContentOffset:(inout CGPoint *)targetContentOffset { 
    *targetContentOffset = scrollView.contentOffset; 
} 

自動スクロールからUIScrollViewを停止します。

関連する問題