0

いくつかのビュー、写真などをスライドショーするアプリを作っています。ユーザーが何もしなければ、数秒ごとにビューが変わります。ユーザーがスワイプした場合は、スライドショーを停止し、ユーザーが手動で操作できるようにする必要があります。

バックグラウンドで、アプリは新しいコンテンツをチェックします。新しいコンテンツが利用可能な場合、ユーザーに最新のビューを表示する必要があります (何もしていない場合)。

アプリはビューをフルスクリーンで表示します。ユーザーがビューをタップすると、ナビゲーション バーが表示され、設定を変更できます。しばらく何もしないと、スライドショーが再び開始され、ナビゲーション バーが非表示になります。

これまでのところ、3 タイマー。さて、それらが互いに干渉しないようにするエレガントな方法が存在するのではないかと思います。

ユーザーが設定を探索している場合 (別の場所に移動する前) にスライドショーを移動するのは正しくありません。

4

1 に答える 1

0

3 つのタイマーを作成し、アルゴリズムに従って管理するだけです。

@property (nonatomic, strong) NSTimer *slideshowTimer;
@property (nonatomic, strong) NSTimer *networkUpdatesTimer;
@property (nonatomic, strong) NSTimer *idleTimer;

適切なタイミングで、このように各タイマーをスケジュールおよびスケジュール解除します。

スケジュール:

self.slideshowTimer = [NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(slideshowTimerFired:) repeats:NO];

タイマー初期化メソッドに渡すセレクターを実装します。

予定外:

[self.slideshowTimer invalidate];

ご覧のとおり、特定のタイマーごとに特定のセレクターがあります。また、NSTimer は、無効化される (スケジュールされていない) まで、独自のターゲットを保持するので注意してください。

于 2013-02-24T00:03:23.813 に答える