2011-11-17 8 views
6

私のiPhoneアプリケーションには、UIとゲームという2つの状態があります。iOS idleTimerDisabledの動作

[[UIApplication sharedApplication].idleTimerDisabled = TRUE; 

をしかし、すぐに、私はUIに戻って、私は、オートスリープが再びアクティブになりたい: ゲームだけ傾けるのデバイスを使用して再生されるので、私は、ゲーム開始で自動スリープをオフに。だから、ゲーム終了で、私はそれを復元:

[[UIApplication sharedApplication].idleTimerDisabled = FALSE; 

が長いゲームプレイした後、それは私が試合後に行く最初のUI画面の即時暗くしました。 アイドルタイマーが無効になっても、それはまだ時間を計算していたようです。そして、それは "有効にする"の直後に発砲した。この問題を解決するにはどうすればよいですか?

答えて

2

idleTimerをプログラムでリセットすることができる場合、私は知らないが、オプションはその前に画面をタッチすることをユーザに要求することで使用してはなりません戻ります。

idleTimerDisabled = NOを設定する前に、もう一度オプションを設定して、タイムアウトが完了するまで待ってください。再度ゲームを開始する場合は、このタイムアウトをクリアすることを忘れないでください。

+1

2番目のオプションは私がすでに使っているものです。私は、この問題を修正するためにあまり「ハッキーな」方法が存在しないのだろうかと思います。 – Nick

+1

システムのアイドルタイムアウト値を推測するのはあまりいいことではありませんが、それ以外はかなり良い "ハック"です。あなたはプログラム的なタッチイベントを試すことができますが、たとえそれが機能しても、それほど「ハッキー」ではありません。 – Gil

+0

@Gilおそらくこの権利を理解していません。 idleTimerDisabled = NOコールの設定を任意に延期すると、OPが見ている「競合状態」にどのように役立つでしょうか?たとえば、iOSタイマーが30秒に設定されていて、現在25秒になっていた場合、アプリは戻ってから5秒の遅延を強制します。あなたはiOSの内部アイドルタイマーのステータスを知らないので、同じ問題が発生するでしょうか? – stonedauwg

1

answerが有用であり得る。

ミュージック/オーディオプレーヤーを使用しているときに問題が発生しましたが、これはタイマーを再度アクティブにしたようです。

PS:ObjectiveCであなたがYES/NOの代わりにFALSE/TRUE

+1

私の質問とあなたが言いました答えの間に直接の関係はありません。私が理解したように、彼らはdisable_timerを起動することに問題がありました。そして、彼らの解決策はNOに設定し、すぐにYESに設定することでした。私の状況では、タイマーは通常は活動化して非活動化しますが、休止時間の長さを「記憶」し、活動化するとすぐに発火します。プログラムで「デバイスに触れる」ようにタイマーをリセットする方法はありませんか? – Nick

+0

私はこのヒントがUISwitch(例えば0/1)の値に設定していたアイドルタイマーで私の問題を解決したと思います。 – GeoffCoope

関連する問題