我目前有一个非常简单的应用程序,唯一的互动是摇动iPhone。但最终屏幕变暗和自动锁定,因为iPhone没有任何触摸事件。我想知道是否有办法在动摇时重置自动锁定超时?
我知道要完全禁用自动锁定,我会这样做:
[[ UIApplication sharedApplication ] setIdleTimerDisabled: YES ]
但我真的不想完全禁用它;如果iPhone合法地不被使用,它应该按预期自动锁定。
感谢您的帮助。
答案 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];
}