39

UIScrollViewの減速を非アクティブ化する方法はありますか?

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

4

5 に答える 5

70

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

実装する:

  1. UIScrollViewまだ行っていない場合は、オブジェクトにデリゲートを割り当てます。
  2. デリゲートの.m実装ファイルに、次のコード行を追加します。

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

出来上がり!自動スクロールはもう必要ありません。

于 2009-08-06T21:08:07.107 に答える
42

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

ファイルにデリゲートメソッドを実装scrollViewWillEndDragging:withVelocity:targetContentOffset:します。.m

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

現在のオフセットをに割り当てると、自動スクロールtargetContentOffsetが停止します。UIScrollView

于 2012-10-17T05:49:36.570 に答える
20

減速率を非常に高くすることができます。無限のレートで、それはすぐに停止します。レートを次の定数に設定してみてください。

scrollView.decelerationRate = UIScrollViewDecelerationRateNormal;

scrollView.decelerationRate = UIScrollViewDecelerationRateFast;

それでも高速では不十分な場合は、UIScrollViewDecelerationRateFastはfloatとしてtypedefされるだけなので、10倍程度で乗算するだけで、さらに高速化できます。

于 2009-07-09T18:22:04.210 に答える
1

densityageRateプロパティを0に設定するだけです

自動スクロールプロパティが無効になります。ただし、scrollview contentsizeが大きいと、ユーザーの操作が悪くなることに注意してください。

于 2018-03-28T07:15:47.727 に答える
0
于 2019-04-17T05:03:26.630 に答える