延迟但不禁用iPhone自动锁定

时间:2009-06-21 05:18:06

标签: iphone timer delay python-idle

我目前有一个非常简单的应用程序,唯一的互动是摇动iPhone。但最终屏幕变暗和自动锁定,因为iPhone没有任何触摸事件。我想知道是否有办法在动摇时重置自动锁定超时?

我知道要完全禁用自动锁定,我会这样做:

[[ UIApplication sharedApplication ] setIdleTimerDisabled: YES ]

但我真的不想完全禁用它;如果iPhone合法地不被使用,它应该按预期自动锁定。

感谢您的帮助。

2 个答案:

答案 0 :(得分:11)

您可以根据自己的NSTimer或行为手势(摇动手机)的值切换[UIApplication sharedApplication].idleTimerDisabled的值。它可以在您的应用程序中多次设置为YES / NO

答案 1 :(得分:6)

这是我在我的应用中使用的代码。一点背景:我的应用程序有一个内置的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];
}