本文转载至  http://gaohaijun.blog.163.com/blog/static/176698271201161524857373/

 
 

问题:那位能说一下怎么能检测到iphone的屏幕现在是否在被点亮的状态,还是被关闭的黑屏状态,
要用那个api ,给点提示 谢谢了。

复制代码

  1. - (void)didTurnOnDisplay;
  2. - (void)didTurnOffDisplay;

没有测试,但是相信可以。

刚刚测试,假如是子类化UIApplication是无法接受到这个方法的。用Objc Runtime的method_exchangeImplementations(method, method)就可以。

以下代码:

UIApplication方面:

 

复制代码

  1. @interface UIApplication (_)
  2. - (void)handleDidTurnOnDisplay;
  3. - (void)handleDidTurnOffDisplay;
  4. @end
  5. @implementation UIApplication (_)
  6. - (void)handleDidTurnOnDisplay
  7. {
  8. NSLog(@"Did turn on display.");
  9. //[self handleDidTurnOnDisplay];
  10. }
  11. - (void)handleDidTurnOffDisplay
  12. {
  13. NSLog(@"Did turn off display.");
  14. //[self handleDidTurnOffDisplay];
  15. }
  16. @end

UIApplicationDelegate:

 

复制代码

  1. - (void)applicationDidFinishLaunching:(UIApplication *)application {
  2. Method m1 = class_getInstanceMethod([UIApplication class], @selector(didTurnOnDisplay));
  3. Method m2 = class_getInstanceMethod([UIApplication class], @selector(didTurnOffDisplay));
  4. Method m3 = class_getInstanceMethod([UIApplication class], @selector(handleDidTurnOnDisplay));
  5. Method m4 = class_getInstanceMethod([UIApplication class], @selector(handleDidTurnOffDisplay));
  6. method_exchangeImplementations(m1, m3);
  7. method_exchangeImplementations(m2, m4);
  8. [window makeKeyAndVisible];
  9. }
  10. - (void)applicationWillResignActive:(UIApplication *)application
  11. {
  12. NSLog(@"Application will resign active.");
  13. }
  14. - (void)applicationDidBecomeActive:(UIApplication *)application
  15. {
  16. NSLog(@"Application did become active.");
  17. }

以上代码在打开后关闭屏幕再打开的条件下输出:

引用
2009-08-17 19:05:37.770 *[380:207] Application did become active.
2009-08-17 19:06:36.370 *[380:207] Did turn off display.
2009-08-17 19:06:36.452 *[380:207] Application will resign active.
2009-08-17 19:06:43.310 *[380:207] Did turn on display.
2009-08-17 19:06:43.415 *[380:207] Application did become active. 

可见这个是方法在delegate的willResignActive和didBecomeActive之前调用。

 
其实屏幕在变黑时, 会通知程序
- (void)applicationWillResignActive:(UIApplication *)application;

而解锁后变亮会触发
- (void)applicationDidBecomeActive:(UIApplication *)application;

 
 
 
 
 

iphone怎么检测屏幕是否被点亮 (用UIApplication的Delegate)的更多相关文章

  1. 将网站添加到iPhone的主屏幕上

    我之前有篇文章介绍过如何将网站固定到Windows的开始菜单,并可以自定义图标.颜色以及Windows推送通知,其实Apple也有类似的功能,通过在网页的head部分添加link标记,在Safari浏 ...

  2. 转载:iPhone 6 Plus 屏幕宽度问题 375 vs 414

    首先看一张比较简单明了的 iPhone 6 与 iPhone 6 Plus 对比图,来自 PaintCode 的<The Ultimate Guide To iPhone Resolutions ...

  3. iPhone手机的屏幕尺寸、分辨率及适配

    1.iPhone尺寸规格 设备 iPhone 宽 Width 高 Height 对角线 Diagonal 逻辑分辨率(point) Scale Factor 设备分辨率(pixel) PPI 3GS ...

  4. iphone及ipad屏幕尺寸参考

    初代iPhone 2007年,初代iPhone发布,屏幕的宽高是 320 x 480 像素.下文也是按照宽度,高度的顺序排列.这个分辨率一直到iPhone 3GS也保持不变.那时编写iOS的App(应 ...

  5. iPhone设备及屏幕适配

    // // Common.h // 微信 // // #ifndef Common_h #define Common_h // iPhone设备及屏幕适配 //4的设备 #define KDevice ...

  6. jquery检测屏幕宽度并跳转页面

    jquery检测屏幕宽度并刷新页面 var owidth = ($(window).width()); //浏览器当前窗口可视区域宽度 if(owidth<640){//小于640跳转一个网址, ...

  7. js 检测屏幕分辨率

    js 检测屏幕分辨率 class screenChecker { constructor() { this.screen = window.screen; this.fullscreen = fals ...

  8. iPhone 12 Pro 屏幕时间设置的密码锁出现弹窗 UI 错位重大 Bug

    iPhone 12 Pro 屏幕时间设置的密码锁出现弹窗 UI 错位重大 Bug iOS 14.1 Bug 弹窗 UI 非常丑 弹窗屏占太高了 屏幕使用时间 https://support.apple ...

  9. 监听iOS检测屏幕旋转状态,不需开启屏幕旋转-b

    -(void)rotation_icon:(float)n { UIButton *history_btn= [self.view viewWithTag:<#(NSInteger)#>] ...

随机推荐

  1. selenium 调用方法

    #coding:utf-8 from selenium import webdriver url = "http://demo.testfire.net" chrome_optio ...

  2. 安装docker-compose的两种方式

    这里简单介绍下两种安装docker-compose的方式,第一种方式相对简单,但是由于网络问题,常常安装不上,并且经常会断开,第二种方式略微麻烦,但是安装过程比较稳定 方法一: # curl -L h ...

  3. cubemap

    cubemap 画的时候 是一张一张画 并不是画成 ------- |       | |       |        |       |       | |        | 这样一个位置 而是一 ...

  4. Xml解析(Dom解析xml)

    xml四种解析方式: DOM 平台无关的官方解析方式 优点:形成了树结构,直观好理解,代码更易编写 解析过程中树结构保留在内存中,方便修改 缺点:当xml文件较大时,对内存耗费比较大,容易影响解析性能 ...

  5. GridView后台绑定数据列表方法

    在很多时候数据绑定都是知道了数据表中的表字段来绑定GridView控件的,那时候我就有个想法希望通过表明来查询数据库中的字段来动态的绑定GirdView控件数据并提供了相关的操作列,在网上找了一些资料 ...

  6. python特殊函数

    __doc__  类(实例).__doc__ 类的描述信息 '''class des''' __module__ 类(实例).__module__ 表示当前操作的对象在那个模块 __class__   ...

  7. Linux经常使用命令(八) - touch

    linux的touch命令不经常使用, 一般用来改动文件时间戳, 或者新建一个不存在的文件. 1. 命令格式: touch [选项]  文件 2. 命令參数: -a    仅仅更改存取时间. -c   ...

  8. LeetCode-Minimum Window Substring -- 窗口问题

    题目描述 Given a string S and a string T, find the minimum window in S which will contain all the charac ...

  9. ubuntu安装rpm格式软件包

    转载自:http://os.51cto.com/art/200708/53942.htm ubuntu的软件包格式是deb,如果要安装rpm的包,则要先用alien把rpm转换成deb.用alien转 ...

  10. C#实现发送手机短信