我目前有一個非常簡單的應用程序,其中唯一的交互是晃動iPhone。然而,由於iPhone沒有得到任何觸摸事件,最終屏幕變暗和自動鎖定。我想知道是否有辦法在動搖時重置自動鎖定超時?延遲但不禁用iPhone自動鎖
我知道,禁用自動鎖完全我這樣做:
[[ UIApplication sharedApplication ] setIdleTimerDisabled: YES ]
,但我真的不希望完全禁用它;如果iPhone沒有被合法使用,它應該像預期的那樣自動鎖定。
感謝您的幫助。
我目前有一個非常簡單的應用程序,其中唯一的交互是晃動iPhone。然而,由於iPhone沒有得到任何觸摸事件,最終屏幕變暗和自動鎖定。我想知道是否有辦法在動搖時重置自動鎖定超時?延遲但不禁用iPhone自動鎖
我知道,禁用自動鎖完全我這樣做:
[[ UIApplication sharedApplication ] setIdleTimerDisabled: YES ]
,但我真的不希望完全禁用它;如果iPhone沒有被合法使用,它應該像預期的那樣自動鎖定。
感謝您的幫助。
您可以根據您自己的NSTimer或行爲手勢(搖動手機)的值切換[UIApplication sharedApplication].idleTimerDisabled
的值。它可以在您的應用程序中多次設置爲YES
/NO
。
好的,我會放棄這一點。我認爲可能只是一個resetIdleTimer方法或更乾淨的東西。 – 2009-06-22 00:01:38
下面是我在我的應用程序中使用的代碼。有點背景:我的應用程序有一個內置的Web服務器,所以用戶可以通過WIFI從瀏覽器訪問數據,並且每次請求到達服務器時,我都會延長鎖定計時器(在這種情況下最少2分鐘;一旦重新啓用,您仍然可以獲得默認添加時間量)。
// disable idle timer for a fixed amount of time.
- (void) extendIdleTimerTimeout
{
// cancel previous scheduled messages to turn idle timer back on
[NSObject cancelPreviousPerformRequestsWithTarget:self
selector:@selector(reenableIdleTimer)
object:nil];
// disable idle timer
[[UIApplication sharedApplication] setIdleTimerDisabled:YES];
// re-enable the timer on after specified delay.
[self performSelector:@selector(reenableIdleTimer) withObject:nil afterDelay: 60 * 2];
}
- (void) reenableIdleTimer
{
sharedApplication].idleTimerDisabled);
[NSObject cancelPreviousPerformRequestsWithTarget:self
selector:@selector(reenableIdleTimer)
object:nil];
// disable idle timer
[[UIApplication sharedApplication] setIdleTimerDisabled:NO];
}
此代碼非常有用,我們直接將它放入我們的應用程序,謝謝!僅供參考,我使用運行iOS 5.0.1的iPad 2進行測試似乎表明,固定時間量實際上成爲最小空閒時間 - 即。如果用戶配置的鎖定延遲較少,屏幕也會在setDileTimerDisabled:NO調用之後立即鎖定。如果用戶鎖定時間長於固定時間,則上述代碼無效。 – JosephH 2011-11-18 17:30:14
我以爲嬰兒奶昔被禁止使用。 – 2009-06-21 10:05:04