距离传感器

简而言之,距离传感器的作用就是用于检测是否有物体靠近设备屏幕

  • 回忆一下,在打电话的过程中,当手机屏幕靠近耳边的时候,是不是屏幕就关闭了,而将手机拿开耳边时,是不是屏幕又被点亮。那么这样做有什么好处呢?
    • 节省电量
    • 防止耳朵或面部不小心触摸而引发一些不想要的意外操作
  • 要想实现距离传感器很简单,只需要一句代码就能让你的应用支持检测是否有物体靠近了你的屏幕,但是并不是所有的 iOS 设备都支持的,从它的官方文档上也能看出来。

    des.png

    所以要先判断当前设备是否支持 proximity Sensor

    看代码:

    - (void)viewDidLoad {
    [super viewDidLoad];
    //判断当前设备是否支持
    if ([UIDevice currentDevice].proximityMonitoringEnabled) {
    //开启距离感应功能
    [[UIDevice currentDevice] setProximityMonitoringEnabled:YES];
    //监听距离感应的通知,如果你想在有物体靠近屏幕的时候 do something,可以在通知的检测方法里进行
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(proximityChange:) name:UIDeviceProximityStateDidChangeNotification object:nil];
    }
    }

    - (void)proximityChange:(NSNotification *)notification {
    // 判断当前设备距离传感器的状态来获得是否有物体靠近屏幕
    if ([UIDevice currentDevice].proximityState) {
    NSLog(@"某个物体靠近了设备屏幕"); //屏幕接收到通知,判断如果当前有物体靠近,则关闭屏幕,使屏幕处于黑屏状态
    } else {
    NSLog(@"某个物体远离了设备屏幕"); //启动屏幕、点亮屏幕
    }
    }

    - (void)dealloc
    {
    [[NSNotificationCenter defaultCenter] removeObserver:self];
    }
  • 我首先拿的是 mini4,证实是并不支持 Proximity Sensor 的,然后在拿的 iPhone 6s ,测试是可以响应距离传感器的,当有物体靠近屏幕时,屏幕关闭,一开物体,点亮屏幕。通知的响应方法里,该通知并没有携带 userInfo 的信息。