Кто-то разместил этот код в другом вопросе, чтобы поместить UIDatePicker в UIAlertSheet:
UIActionSheet *menu = [[UIActionSheet alloc] initWithTitle:@"Date Picker"
delegate:self
cancelButtonTitle:@"Cancel"
destructiveButtonTitle:nil
otherButtonTitles:nil];
// Add the picker
UIDatePicker *pickerView = [[UIDatePicker alloc] init];
pickerView.datePickerMode = UIDatePickerModeDate;
[menu addSubview:pickerView];
[menu showInView:self.view];
[menu setBounds:CGRectMake(0,0,320, 500)];
CGRect pickerRect = pickerView.bounds;
pickerRect.origin.y = -100;
pickerView.bounds = pickerRect;
[pickerView release];
[menu release];
Я изменил его на это:
UIActionSheet *menu = [[UIActionSheet alloc] initWithTitle:nil
delegate:nil
cancelButtonTitle:@"Done"
destructiveButtonTitle:nil
otherButtonTitles:nil];
// Add the picker
UIDatePicker *pickerView = [[UIDatePicker alloc] init];
pickerView.datePickerMode = UIDatePickerModeCountDownTimer;
[menu addSubview:pickerView];
[menu showInView:self.navigationController.tabBarController.view];
[menu setBounds:CGRectMake(0,0,320, 516)];
[pickerView setFrame:CGRectMake(0, 85, 320, 216)];
Это приводит к правильному расположению листа предупреждений (игнорируйте nil делегата, это просто для отображения). Проблема здесь:
(источник: hosting-wizards.com а>)
Как видите, над минутным скроллером есть проблема с наслоением. Я не подтвердил, происходит ли это на устройстве. Любые идеи относительно того, почему это происходит?
Другой вопрос: почему селектор setBounds на UIActionSheet имеет размер Y, установленный на такое высокое значение для правильного отображения? Установка размера Y на 480 должна создать полноэкранный режим, не так ли? Установка этого значения на ноль делает его почти невидимым.
ПРИМЕЧАНИЕ. Код, вставленный выше, не размещает UIDatePicker в том же месте, что и на картинке, но проблема с наслоением возникает независимо от того, где находится UIDatePicker. Проблема со слоями только сверху, а не снизу.