I am showing a UIDatePicker on a universal app. On iPhone it shows fine, on iPad it shows only the bottom portion. I am using UIActionSheet in other portions of the app which display fine on both. How do I get it to display properly on the iPad?


- (void)showDatePicker
{
actionSheet = [[UIActionSheet alloc] initWithTitle:nil
delegate:nil
cancelButtonTitle:nil
destructiveButtonTitle:nil
otherButtonTitles:nil];
[actionSheet setActionSheetStyle:UIActionSheetStyleBlackTranslucent];
datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 40, 0, 0)];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
NSString *startTimeString = [MathFunctions minutesToTimeString:[appointment.start_time integerValue]];
[dateFormatter setDateFormat:@"yyyyMMdd h:mm a"];
[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]];
NSString *dateTimeString = [NSString stringWithFormat:@"%@ %@", appointment.date, startTimeString];
datePicker.date = [dateFormatter dateFromString:dateTimeString];
[actionSheet addSubview:datePicker];
UISegmentedControl *closeButton = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObject:@"Done"]];
closeButton.momentary = YES;
closeButton.frame = CGRectMake(260, 7.0f, 50.0f, 30.0f);
closeButton.segmentedControlStyle = UISegmentedControlStyleBar;
closeButton.tintColor = [UIColor blackColor];
[closeButton addTarget:self action:@selector(changeDate:) forControlEvents:UIControlEventValueChanged];
[actionSheet addSubview:closeButton];
[actionSheet showInView:self.view];
[actionSheet setBounds:CGRectMake(0, 0, 320, 485)];
}
It’s easy, action sheet is supposed to have only buttons inside, not other components. Its size is probably calculated from the number of buttons. You are not adding any buttons so the size of the action sheet is zero.
Use
UIPopoverControllerinstead ofUIActionSheet.