1

3秒後にコントロールボタンを非表示にする必要があるアプリに取り組んでいるので、NSTimerを使用してコードを記述し、Touchが開始されましたが、問題は、タイマー以外のボタンをもう一度タッチすると、タイマーがリセットされないことです。タッチの例をドラッグのように動かします。

ドラッグまたはタッチを移動すると、タイマーがリセットされますが、リセットされません。

この実装は、他の領域を継続的にタッチすると機能することがわかりました(ただし、コントロールボタンは機能しません)。コントロールボタンを継続的にタッチすると、3秒後に非表示になります。この問題の解決方法。ボタンクリックでもイベントを発生させたい。

編集済み私は自分の問題を自分で解決します。ボタンクリックセクターにこのコードを追加しましたが、機能します。

すべてのサポートに感謝します

if(screenTimer)
{
    [screenTimer invalidate];
    screenTimer = nil;
    screenTimer = [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(turnOffScreen) userInfo:nil repeats:NO];
}

これが私のコードです

// Touch began for touch event.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

if(screenTimer)
{
    [screenTimer invalidate];
    screenTimer = nil;
}

mode1View.hidden=NO;

 screenTimer = [NSTimer scheduledTimerWithTimeInterval:3.0 target:self       selector:@selector(turnOffScreen) userInfo:nil repeats:NO];
}

- (void)turnOffScreen{
NSLog(@"TURN OFF SCREEN");
if(screenTimer!=nil)
{
    mode1View.hidden=YES;
}
}

どんな助けでも大歓迎です。ありがとうございました

4

1 に答える 1

0

やってみました

[self performSelector:@selector(turnOffScreen:) withObject:nil afterDelay:3.0];

特定の遅延の後、オブジェクトを使用してオブジェクトのメソッドを呼び出すメソッドNSObjectperformSelector:withObject:afterDelay:

于 2013-03-13T11:25:56.060 に答える