- (IBAction) showCatPicker {
if (self.catList !=nil) {
self.catList=nil;
[catList release];
}
self.catList = [[NSMutableArray alloc] init];
self.actionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:nil cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil];
[self.actionSheet setActionSheetStyle:UIActionSheetStyleBlackTranslucent];
CGRect pickerFrame = CGRectMake(0, 40, 0, 0);
if(self.catPicker == nil) {
self.catPicker = [[UIPickerView alloc] initWithFrame:pickerFrame];
self.catPicker.showsSelectionIndicator = YES;
self.catPicker.dataSource = self;
self.catPicker.opaque = YES;
self.catPicker.multipleTouchEnabled = YES;
self.catPicker.userInteractionEnabled = YES;
self.catPicker.delegate = self;
}
[self.actionSheet addSubview:self.catPicker];
UISegmentedControl *closeButton = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObject:@"Select"]];
closeButton.momentary = YES;
closeButton.frame = CGRectMake(260, 7.0f, 50.0f, 30.0f);
closeButton.segmentedControlStyle = UISegmentedControlStyleBar;
closeButton.tintColor = [UIColor colorWithRed:19.0/255 green:122.0/255 blue:53.0/255 alpha:1.0];
[closeButton addTarget:self action:@selector(dismissGenderPicker:) forControlEvents:UIControlEventValueChanged];
UISegmentedControl *cancelButton = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObject:@"Cancel"]];
cancelButton.momentary = YES;
cancelButton.frame = CGRectMake(10, 7.0f, 50.0f, 30.0f);
cancelButton.segmentedControlStyle = UISegmentedControlStyleBar;
cancelButton.tintColor = [UIColor colorWithRed:19.0/255 green:122.0/255 blue:53.0/255 alpha:1.0];
[cancelButton addTarget:self action:@selector(cancelActionSheet) forControlEvents:UIControlEventValueChanged];
[self.actionSheet addSubview:cancelButton];
[self.actionSheet addSubview:closeButton];
[cancelButton release];
[closeButton release];
[self.actionSheet showInView:self.view];
[self.actionSheet setBounds:CGRectMake(0, 0, 320, 485)];
[catPicker reloadComponent:0];
}
Respuesta
self.view.userInteractionEnabled = NO;
self.blurView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[self.blurView setBackgroundColor:[UIColor lightGrayColor]];
[self.blurView setAlpha:0.3];
[[[UIApplication sharedApplication] delegate].window addSubview:self.blurView];
CGRect pickerFrame = CGRectMake(0, 40, 0, 0);
UIDatePicker *pickerView = [[UIDatePicker alloc] initWithFrame:pickerFrame];
pickerView.datePickerMode = UIDatePickerModeDate;
[pickerView setBackgroundColor:[UIColor whiteColor]];
[pickerView addTarget:self action:@selector(pickerChanged:) forControlEvents:UIControlEventValueChanged];
__block CGRect frame = CGRectMake(0, [[UIScreen mainScreen] bounds].size.height, [[UIScreen mainScreen] bounds].size.width, 220);
self.viewForPicker = [[UIView alloc] initWithFrame:frame];
[self.viewForPicker setBackgroundColor:[UIColor whiteColor]];
[self.viewForPicker addSubview:pickerView];
[[[[UIApplication sharedApplication] delegate] window] addSubview:self.viewForPicker];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[button setTitleColor:[UIColor lightGrayColor] forState:UIControlStateHighlighted];
[button setTitle:@"Done" forState:UIControlStateNormal];
[button addTarget:self action:@selector(doneButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
[button setFrame:CGRectMake(250, 15, 60, 30)];
[button.layer setCornerRadius:5.0];
[button.layer setBorderWidth:1.0];
[button.layer setBorderColor:[[IMAppStyle appColor] CGColor]];
[self.viewForPicker addSubview:button];
[self.viewForPicker.layer setCornerRadius:8.0];
float animationDuration = 0.25;
[UIView animateWithDuration:animationDuration animations:^{
frame.origin.y -= (180+40+35);
[self.viewForPicker setFrame:frame];
}];
Definitivamente, usted debe utilizar NO UIActionSheet celebrar una UIDatePicker porque esta funcionalidad está obsoleto!
Desde el Documentation:
subclassing Notas
UIActionSheet no está diseñado para ser una subclase, ni debe añadir vistas a su jerarquía. Si necesita presentar una hoja con más personalización que la proporcionada por la API UIActionSheet, puede crear y presentarla modalmente con presentViewController: animated: completion :.
y
Importante: UIActionSheet está en desuso en iOS 8. (Tenga en cuenta que UIActionSheetDelegate también está en desuso.) Para crear y administrar acción hojas en iOS 8 y después, en lugar de utilizar UIAlertController con una preferredStyle of UIAlertControllerStyleActionSheet.
Lo que podría hacer fácilmente es crear una UIView para mantener el UIDatePicker y animar la vista según corresponda. Incluso puede agregarle una UIToolbar si lo necesita.
He aquí un ejemplo:
Cree dos propiedades:
@property (strong, nonatomic) UIDatePicker *theDatePicker;
@property (strong, nonatomic) UIView *pickerView;
crear su selector, incrustarla en el UIView
y espectáculo:
-(void) createDatePickerAndShow {
UIToolbar *controlToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, pickerView.bounds.size.width, 44)];
[controlToolbar sizeToFit];
UIBarButtonItem *spacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
UIBarButtonItem *setButton = [[UIBarButtonItem alloc] initWithTitle:@"Set" style:UIBarButtonItemStyleDone target:self action:@selector(dismissDateSet)];
UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc] initWithTitle:@"Cancel" style:UIBarButtonItemStyleBordered target:self action:@selector(cancelDateSet)];
[controlToolbar setItems:[NSArray arrayWithObjects:spacer, cancelButton, setButton, nil] animated:NO];
[theDatePicker setFrame:CGRectMake(0, controlToolbar.frame.size.height - 15, theDatePicker.frame.size.width, theDatePicker.frame.size.height)];
if (!pickerView) {
pickerView = [[UIView alloc] initWithFrame:theDatePicker.frame];
} else {
[pickerView setHidden:NO];
}
CGFloat pickerViewYpositionHidden = self.view.frame.size.height + pickerView.frame.size.height;
CGFloat pickerViewYposition = self.view.frame.size.height - pickerView.frame.size.height;
[pickerView setFrame:CGRectMake(pickerView.frame.origin.x,
pickerViewYpositionHidden,
pickerView.frame.size.width,
pickerView.frame.size.height)];
[pickerView setBackgroundColor:[UIColor whiteColor]];
[pickerView addSubview:controlToolbar];
[pickerView addSubview:theDatePicker];
[theDatePicker setHidden:NO];
[self.view addSubview:pickerView];
[UIView animateWithDuration:0.5f
animations:^{
[pickerView setFrame:CGRectMake(pickerView.frame.origin.x,
pickerViewYposition,
pickerView.frame.size.width,
pickerView.frame.size.height)];
}
completion:nil];
}
And to dismiss the DatePicker:
-(void) cancelDateSet {
CGFloat pickerViewYpositionHidden = self.view.frame.size.height + pickerView.frame.size.height;
[UIView animateWithDuration:0.5f
animations:^{
[pickerView setFrame:CGRectMake(pickerView.frame.origin.x,
pickerViewYpositionHidden,
pickerView.frame.size.width,
pickerView.frame.size.height)];
}
completion:nil];
}
- 1. cómo despedir Hoja de acción
- 2. Android Hoja de acción
- 3. ¿Cómo configuro la fecha para un selector de fecha?
- 4. ¿Cómo utilizar la función de agregar fecha en la hoja de cálculo de Google?
- 5. ¿Cómo puedo agregar un nuevo botón en el selector de fecha en android?
- 6. Selector de fecha en Android
- 7. Cómo agregar encabezado en la hoja de cálculo de Google
- 8. utilizar el calendario como selector de fecha
- 9. ¿Cómo agregar alguna acción en el constructor?
- 10. Cómo agregar la hoja de gráfico en Excel usando C#
- 11. selector de fecha años mínimo
- 12. Cambiar el idioma del selector de fecha
- 13. selector de fecha en jqGrid, ejemplo simple?
- 14. Establecer la fecha predeterminada del selector de fecha WPF en la fecha actual
- 15. selector de fecha y hora para jsf
- 16. ¿Cómo mostrar una hoja de acción dentro del popover?
- 17. cómo agregar una acción en la tecla de retorno UITextField?
- 18. acción selector de fechas jQuery extraño
- 19. Agregar acción en SonataAdminBundle
- 20. ¿Cómo agregar un botón a una hoja de UIActionSheet existente?
- 21. ¿Dónde está el selector de fecha en WinRT XAML?
- 22. Rails 3 fecha del selector de fecha de jquery no guardada en la base de datos
- 23. Cómo agregar automáticamente la fecha de 1 año a una fecha existente en el servidor SQL
- 24. Selector de fecha jQuery - deshabilitar fechas pasadas
- 25. ¿Cómo creo un selector de fecha en tkinter?
- 26. Validación del selector de fecha WPF
- 27. Código de selector de fecha dinámico de JQuery
- 28. Agregar hoja de estilo css a app_offline
- 29. jQuery - Control de selector de fecha móvil
- 30. ASP.NET selector de fecha y hora?
Toda la razón, estoy de acuerdo con usted porque iOS 8 prohíbe ahora agregar subvistas a UIActionSheet y mostrar una vista modal vacía que no se puede descartar de tu aplicación, a menos que la elimines. – cdescours
Entonces, ¿debería funcionar? Podría hacer algo mal en alguna parte, pero no obtengo nada en la pantalla. – Moelbeck