首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检测iOS上的亮度变化是用户操作还是自动操作

检测iOS上的亮度变化是用户操作还是自动操作
EN

Stack Overflow用户
提问于 2014-01-15 11:17:53
回答 3查看 2.6K关注 0票数 4

我看到,我可以通过注册为UIScreenBrightnessDidChangeNotification的观察者来检测屏幕亮度的变化

代码语言:javascript
运行
复制
- (void)viewDidLoad
{
    [super viewDidLoad];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(brightnessDidChange:) name:UIScreenBrightnessDidChangeNotification object:nil];
}

-(void) brightnessDidChange:(NSNotification*)notification
{
    NSLog(@"Brightness did change");
}

通知的object属性是一个UIScreen对象。

我试图找到一个属性,让我知道该操作是由用户生成的,还是由iOS自动生成的。这对于我的应用程序来说很重要,因为这两种情况都应该被不同的对待。我在文档中没有找到关于这个的任何东西。任何帮助都将不胜感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-15 11:46:08

我认为这是不可能的,我们只能得到notification时,亮度变化的系统或手动。我们不能把两者区分开来。

票数 6
EN

Stack Overflow用户

发布于 2016-06-22 11:41:21

如果用户改变亮度,他们将从控制中心或设置应用程序。您可以根据UIApplicationDelegate通知检测甚至区分这两种情况(因为您的应用程序将在打开Control时进入非活动,在用户打开设置时进入后台)。

如果您收到UIScreenBrightnessDidChangeNotification,而您的应用程序是Active,您可以确定这是由系统触发的自动更改。

当然,当您的应用程序处于、非活动背景状态时,也可能会发生自动更改,但基于此的启发式解决方案可能总比什么都没有好。

票数 7
EN

Stack Overflow用户

发布于 2019-08-20 19:45:03

Swift 5.2

通知现在被称为UIScreen.brightnessDidChangeNotification

代码语言:javascript
运行
复制
let noteCenter = NotificationCenter.default
noteCenter.addObserver(self,
                       selector: #selector(brightnessDidChange),
                       name: UIScreen.brightnessDidChangeNotification,
                       object: nil)

@objc func brightnessDidChange() {
    print(UIScreen.main.brightness)
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21135992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档