Alex Rivera | Logout

Calling the appropriate setStatusBarHidden per iOS version

Asked 2010-06-12T10:03:18.307
10

Today my app approved, but I got emails from users says it crash. I figured out that

[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation: UIStatusBarAnimationSlide];

Is the problem, Because users have firmware 3.1.x this API is not working and app crash.

So I have replace it with

    if ([[[UIDevice currentDevice] systemVersion] floatValue]>=3.2)
        [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation: UIStatusBarAnimationSlide];
    else 
        [[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES];

My questions...

Is what I did the best solution?

Why XCODE did not warn me that SetStatusBarHidden withAnimation is not in 3.0 while I set my Traget OS firmware 3.0?

Do I have to check on every API to see if it is working with my Target OS?

Thank you

Edit
Report

1 Answer

23

I'd recommend you to use the following snipplet of code instead of checking against the version of the os, rather check if a selector is currently available.

if([[UIApplication sharedApplication] respondsToSelector:@selector(setStatusBarHidden: withAnimation:)])
    [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationFade];
else 
    [[UIApplication sharedApplication] setStatusBarHidden:NO animated:YES];
answered 2010-06-28T07:14:24.627

Your Answer