10

scrollView をドラッグすると現在のスレッドの RunLoop モードが UITrackingRunLoopMode に変更され、ドラッグを停止すると NSDefaultRunLoopMode に戻る UIScrollView の動作を模倣したいと考えています。

私は自分のクラスでそれをやりたいのですが、ビューをドラッグしています...現在、私はこのコードを使用しています

while (_draggingView && [[NSRunLoop currentRunLoop] runMode:UITrackingRunLoopMode beforeDate:[NSDate distantFuture]]);

ドラッグを停止すると、_draggingView が nil に変更されるため、そのモードでのループを停止します。これを行うためのよりエレガントな/より良い方法はありますか?

UIScrollView はどのようにそれを行っていますか? 入力ソース?

ありがとうございました

4

2 に答える 2

4

CFRunLoopStop実行ループを強制的に戻すために使用できます。

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    [super touchesEnded:touches withEvent:event];
    CFRunLoopStop(CFRunLoopGetMain());
}
于 2012-05-31T18:08:41.583 に答える
-1

減速メソッドを使用できます。

- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

スクロール ビューをドラッグした後、減速を開始するため、これらのメソッドが役立つ場合があります。

于 2012-05-29T12:13:16.450 に答える