1

ボタンが表示され、操作されている場合は表示されたままになるAndroidのzoomControlと同様の動作を実装しようとしていますが、一定期間操作されていない場合、それらは消えます。

一般的なロジックは次のようになります。

ボタンの表示: 表示したい時間のタイマー/イベントを開始します

ボタンとの相互作用が発生した場合、タイマー/イベントを新しい時間量にリセットします

タイマー/イベントがヒットした場合、ボタンを非表示にします。

すべての相互作用でボタンを非表示にするメソッドにいくつかのを実行し、各相互作用でインクリメントされるいくつかのカウント/フラグperformSelector afterDelayのチェックによって呼び出される非表示メソッドボタンを持たせるperformSelectorことができます..そしてこれはうまくいくでしょうが、むしろエレガントでない:

ボタンを表示 : インクリメント カウント :performSelector 5 秒後に非表示

ボタン アクション : カウントを増やす : セレクタを実行 5 秒後に非表示

非表示 : カウント !=0 の場合はカウントを減らし、それ以外の場合はボタンを非表示にします

より良い方法はありますか?これは私には不器用に感じます。

4

2 に答える 2

3

NSTimerで作る

myButtonHideTimer = [NSTimer scheduledTimerWithTimeInterval:5 target:self selector:@selector(hideButton:) userInfo:nil repeats:NO];

次に、タイマーが呼び出される前にインタラクションを取得した場合

[myButtonHideTimer invalidate];//This stops the event from triggering

次に、タイマーを再作成してトリガー時間をリセットします

于 2012-06-01T12:55:57.910 に答える
0

performSelector:withObject:afterDelay:専用のタイマーオブジェクトを処理する必要がないので、私はルートに行きます。ただし、カウンターが何のために必要かはわかりません。

  1. を呼び出しperformSelector:withObject:afterDelay:ます。
  2. ユーザーの操作が発生したら、を呼び出しますcancelPreviousPerformRequestsWithTarget:selector:object:performSelector:withObject:afterDelay:その後、もう一度お電話ください。
于 2012-06-01T13:11:25.560 に答える