Используйте UIAlertController, предпочтительную замену для UIActionSheet. Затем добавьте UIDatePicker addSubView в UIAlertController.view вместо UIActionSheet. Установите заголовок UIAlertController так же, как вы бы сделали для UIActionSheet. Вот пример кода:
NSString *title = UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation) ? @"\n\n\n\n\n\n\n\n\n" : @"\n\n\n\n\n\n\n\n\n\n\n\n" ;
if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_7_1){
//Pre iOS 8
UIActionSheet *actionSheet = [[UIActionSheet alloc]
initWithTitle:title
delegate:self
cancelButtonTitle:nil
destructiveButtonTitle:nil
otherButtonTitles:@"OK", nil];
[actionSheet addSubview:datePicker];
[actionSheet setTag:ACTION_SHEET_DATEPICKER];
[actionSheet showInView:self.mapView];
} else {
//for iOS 8
UIAlertController* datePickerContainer = [UIAlertController alertControllerWithTitle: title
message:nil
preferredStyle: UIAlertControllerStyleActionSheet];
[datePickerContainer.view addSubview:datePicker];
//Add autolayout constraints to position the datepicker
[datePicker setTranslatesAutoresizingMaskIntoConstraints:NO];
// Create a dictionary to represent the view being positioned
NSDictionary *labelViewDictionary = NSDictionaryOfVariableBindings(datePicker);
NSArray* hConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[datePicker]-|" options:0 metrics:nil views:labelViewDictionary];
[datePickerContainer.view addConstraints:hConstraints];
NSArray* vConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[datePicker]" options:0 metrics:nil views:labelViewDictionary];
[datePickerContainer.view addConstraints:vConstraints];
[datePickerContainer addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction* action){
[self dateSelected:nil];
}]];
[self presentViewController:datePickerContainer animated:YES completion:nil];
}
Пожалуйста, исправьте и улучшите, по своему усмотрению.
Удивительное сообщение в блоге от этого парня. Используя его сразу ... – Hutjepower