iPhone 的接近传感器给出了错误的数据

iPhones proximity sensor gives wrong data

我会实施检查 proximityState 属性 来告诉我用户是否有 phone 靠近他的耳朵。就像他在打 phone 电话一样。在 iOS 7 作品中,但后来由于其他原因我不得不删除这个 feauter。现在 iOS 8 我在应用程序中添加了此功能,并且在接近度第一次将其状态更改为 YES 后永远保持 YES。即使您从耳朵上取下设备,它也不会切换到 NO。看起来这是 ios 中的一个错误,有没有其他人遇到同样的问题。

谢谢。

我没有遇到过这个问题,下面的代码在 iOS 中有效 8. 请记住,如果应用程序不支持纵向模式,则不会监控接近传感器。 我的应用程序的代表:

#import "AppDelegate.h"

@interface AppDelegate ()
@end

@implementation AppDelegate
{
    UIDevice *currentDevice;
}

- (BOOL) application: (UIApplication*) application didFinishLaunchingWithOptions: (NSDictionary*) launchOptions
{
    NSLog(@"Application finished launching!");
    currentDevice = [UIDevice currentDevice];
    [currentDevice setProximityMonitoringEnabled:YES];
    if (currentDevice.proximityMonitoringEnabled)
    {
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onProximitySensorStateChanged:) name:UIDeviceProximityStateDidChangeNotification object:nil];
        NSLog(@"Monitoring proximity sensor!");
    }
    else
    {
        NSLog(@"Device does not have a proximity sensor!");
    }
    return YES;
}

- (void) onProximitySensorStateChanged: (NSNotification*) notification
{
    if (currentDevice.proximityState)
    {
        NSLog(@"User is now close to the proximity sensor!");
    }
    else
    {
        NSLog(@"User is now away from the proximity sensor!");
    }
}
@end

所以我发现了问题。 self.device.proximityState 应该在主线程上读取。所有工作都是在后台威胁中完成的,如果我在主线程上检查 proximityState 它就可以工作。