UIDeviceOrientationFaceDown in iphone

ios5, iphone, objective-c, uideviceorientation

Solution

You can accomplish this by detecting the ProximityState of iPhone. Using the `[UIDevice currentDevice]` singleton, setting the `proximityMonitoringEnabled` to `YES`. you can access the proximity information through the proximityState property.

[[UIDevice currentDevice]proximityState];

iPhone has a sensor turns off the screen when you put it on your ear during a call, AFAIK that is an infrared sensor. and you can access it.

EDIT: You can also accomplish it using the below code. `UIDeviceOrientationFaceDown The device is held parallel to the ground with the screen facing downwards.` (regardless if it touched any object) if you want to know if the iPhone touched an object, detect the proximity state of device.

 [[NSNotificationCenter defaultCenter] removeObserver:self];
 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(detectOrientation) name:@"UIDeviceOrientationDidChangeNotification" object:nil];


    -(void)detectOrientation;{

            switch ([[UIDevice currentDevice] orientation]) {
                case UIDeviceOrientationPortrait:
                {
                    NSLog(@"portrait");
                }
                    break;
                case UIDeviceOrientationPortraitUpsideDown:
                {
                    NSLog(@"portraitUpSideDown");
                }
                    break;
                case UIDeviceOrientationLandscapeLeft:
                {
                    NSLog(@"landscapeLeft");
                }
                    break;
                case UIDeviceOrientationLandscapeRight:
                {
                    NSLog(@"landscapeRight");
                }
                break;
               case UIDeviceOrientationFaceDown:
               {
                    NSLog(@"facedown!!");
                }
                 break;

            default:
                break;
        }
    } 

}

EDIT: to answer the question in comment. add this line in your viewDidLoad

[UIDevice currentDevice].proximityMonitoringEnabled = YES;
[[NSNotificationCenter defaultCenter] removeObserver:self];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleProximityChangeNotification:) name:UIDeviceProximityStateDidChangeNotification object:nil];

then write a method

-(void)handleProximityChangeNotification{
     if([[UIDevice currentDevice]proximityState]){
        NSLog(@"...");
    }
}

Problem

I want to detect UIDeviceOrientationFaceDown. How can i do this??? Actually i want to perform some action when my iphone face is down on flat surface. how is it possible??? plz help me to do this. i have this code, but don't know where and how apply this code ``` [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; BOOL getOrientationUpdates = [[UIDevice currentDevice] isGeneratingDeviceOrientationNotifications]; NSLog(@"will receive orientation notifications: %@", getOrientationUpdates?@"YES":@"NO"); [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:UIDeviceOrientationDidChangeNotification object:nil]; ``` if there is any tutorial then please suggest me that Thanks in Advance and most welcome to your precious help and suggestions.

Original source