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 它就可以工作。
我会实施检查 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 它就可以工作。