I solved that issue by doing this.
I have a series of macros (thanks to someone else's answer on stackoverflow months ago) that I use to determine which device is being used. They are:
#define IS_IPAD (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
#define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
#define IS_IPHONE_5 (IS_IPHONE && [[UIScreen mainScreen]bounds].size.height == 568.0f)
I know some people are against using macros and for good reason, but I find them useful in some cases. So, to be thorough the macros can be written as methods instead.
-(BOOL)isIpad {return UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad ? YES : NO;}
-(BOOL)isIphone {return UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone ? YES : NO;}
-(BOOL)isIphone5 {return ([self isIphone] && [[UIScreen mainScreen]bounds].size.height == 568.0f) ? YES : NO;}
I place these in a .h file that I use specifically for macros called ResourceConstants.h. I import this file into any class I need to use them in.
Once these are defined, go to your -viewDidLoad method in the view controller and set your views frame like so:
if (IS_IPHONE)
self.view.frame = CGRectMake(0, 0, 320, 480);
-- EDIT --
You may also need to adjust the placement/size of objects/Widgets on your screen since the whole screen is a half inch shorter. You can do it the same way as long as you have created property outlets on your view controller to reference any objects on screen that you need to resize. Like so,
self.myobject.frame = CGRectMake(myTopLeftCornerXCoord, myTopLeftCornerYCoord, myWidth, myHeight);
Hope that helps! :)