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

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

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

Here我发现在info.plist中设置所需设备功能提示可能有所帮助.但到目前为止还没有.我刚添加了所有相机标志.

有任何想法吗?

非常感谢!

马库斯

解决方法

我可以像这样重置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];
    }];
}

我怀疑发生的是,内部UIImagePickerController将UIApplication.idleTimerDisabled设置为YES,以防止相机进入睡眠状态.完成后(在委托方法调用后,即使在执行动画完成块之后显然),UIImagePickerController将UIApplication.idleTimerDisabled设置为NO.相反,如果该值以前是NO,则应该这样做.

我向苹果提交了一个错误报告.见UIImageViewControllerBug示例项目.

相关文章

背景 前端时间产品经理决定使用百度统计,使得 工程B 中原统计sdk-友盟统计,需要被去除。之前尝试去除...
结论: alloc负责分配内存和创建对象对应的isa指针; init只是返回alloc生成的对象。 所以alloc后,多次...
更新 如果UI愿意把启动图切割成n份,按一定约束在launchscreen.storyboard中进行排版,启动图效果会更好...
最近在看一本书《Effective OC 2.0》,今天看到有个tip是OC适中循环各自优劣性,作者最终推荐此块循环。...
// // ViewController.m // paintCodeTestOC //gif // Created by LongMa on 2019/7/25. // #import &a...
背景介绍 一般情况下,出于省电、权限、合理性等因素考虑,给人的感觉是很多奇怪的需求安卓可以实现,但...