Bot
Bot

Reputation: 11855

UIDatePicker shows weird on iPad but fine on iPhone

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?

iPhone 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)];
}

Upvotes: 2

Views: 1039

Answers (2)

AAV
AAV

Reputation: 3803

Check this answer. This is what you want to do with your code.

Displaying a UIDatePicker inside of a UIPopover

UIDatePicker not rendering properly for certain modes in UIPopoverController

Upvotes: 0

Sulthan
Sulthan

Reputation: 130102

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 UIPopoverController instead of UIActionSheet.

Upvotes: 1

Related Questions