延缓但不能禁用iPhone自动锁定(Delaying but not disabling iPhon

2019-06-23 19:13发布

我现在有一个非常简单的应用程序其唯一作用是晃动iPhone。 但是最终由于iPhone屏幕变暗,并自动锁定没有得到任何触摸事件。 我在想,如果有一种方法动摇时,复位自动锁定超时?

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

[[ UIApplication sharedApplication ] setIdleTimerDisabled: YES ]

但我真的不希望完全禁用它; 如果合法不使用iPhone它应该自动锁定预期。

谢谢你的帮助。

Answer 1:

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



Answer 2:

以下是我在我的应用程序使用的代码。 一点背景:我的应用程序有一个内置的网络服务器,以便用户可以从一个浏览器通过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];
}


文章来源: Delaying but not disabling iPhone auto-lock