iOS:idleTimerDisabled = YES仅在使用ImagePicker之前有效

Mar*_*zen 11 uiimagepickercontroller uiapplication ios

我有一个iPad调查工具作为内部企业应用程序.我阻止锁屏与设置[[UIApplication sharedApplication] setIdleTimerDisabled: YES];didFinishLaunchingWithOptions应用程序委托的.

这工作正常,直到我使用imagePicker拍摄图像.之后,idleTimer再次激活.我试图在拍摄图像后禁用它,但这不起作用.

在这里,我发现提示在info.plist中设置所需的设备功能可能会有所帮助.但到目前为止它没有.我刚刚添加了所有相机特定的标志.

有任何想法吗?

非常感谢!

马库斯

Jam*_*iel 11

我能够像这样重置UIApplication idleTimerDisabled:

- (void)resetIdleTimerDisabled
{
    [[UIApplication sharedApplication] setIdleTimerDisabled:YES];
}

#pragma mark - UIImagePickerControllerDelegate

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    [self dismissViewControllerAnimated:YES completion:^{
        [self performSelector:@selector(resetIdleTimerDisabled) withObject:nil afterDelay:1.0];
    }];
}

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
    [self dismissViewControllerAnimated:YES completion:^{
        [self performSelector:@selector(resetIdleTimerDisabled) withObject:nil afterDelay:1.0];
    }];
}
Run Code Online (Sandbox Code Playgroud)

我怀疑的情况是,在内部UIImagePickerController设置UIApplication.idleTimerDisabled,以YES保持相机睡觉.完成后(在调用委托方法之后,显然甚至在执行动画完成块之后),UIImagePickerController设置UIApplication.idleTimerDisabled回到NO.相反,如果之前的值,它只应该这样做NO.

我向Apple提交了一份错误报告.请参阅UIImageViewControllerBug示例项目.