0

カスタムコントロールを最初から作成しています。UIScrollViewのように、scrollViewDidScrollのように、コントロールがスライドを開始したときにトリガーするデリゲートメソッドが必要です。

touchesMoved内に呼び出しを入れて、すべての移動の変更をチェックすることを考えましたが、テストのようなことをしました。これは非常に高価で、touchsMovedが遅くなります。

2番目のアプローチは、xミリ秒ごとにメソッドをトリガーするNSTimerを作成して、コントロールが別の位置にあるかどうかを確認してからメソッドをトリガーすることですが、それについてはよくわかりません。コントロールは動いていません。

それを行うための最良の方法は何ですか?どうやってやるの?

ありがとう。

4

3 に答える 3

1

タイマーのアプローチが正しいのかもしれません。バウンスと減速を計算する場合は、タッチ開始時にタイマーを開始し、タッチ終了またはタッチ終了の 3 ~ 4 秒後にタイマーを停止することをお勧めします。

于 2012-06-03T19:50:47.483 に答える
0

ホイールを再発明してカスタム コントロールをゼロから作成するべきではないと本当に思います。UIControl をサブクラス化します。3つの方法があります

- (BOOL)beginTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event
- (BOOL)continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event
- (void)endTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event

チェックを実行してアクションを実行できます。

于 2012-06-03T19:47:33.857 に答える
0

touchesMoved: の代わりに UIGestureControl を使用し、デリゲート メソッドを作成して、didScroll: メソッドをデリゲートに渡すことができます。

于 2012-06-03T19:51:37.897 に答える