Qualcuno ha postato questo codice in un'altra domanda per mettere un'UIDatePicker in un UIAlertSheet:UIDatePicker in UIActionSheet stratificazione problema
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];
Ho modificato a questo:
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)];
questo produce correttamente un foglio di avviso posizionato (ignora il delegato nullo, questo è solo per scopi di visualizzazione). Il problema sta qui:
alt text http://hosting-wizards.com/actionsheet.jpg
Come si può vedere, al di sopra minuto scroller, c'è un problema di stratificazione. Non ho confermato se ciò si verifica sul dispositivo. Qualche idea sul perchè questo sta succedendo?
Un'altra domanda: perché il selettore setBounds su UIActionSheet ha la dimensione Y impostata su un valore così elevato per la visualizzazione corretta? Impostare la dimensione Y su 480 dovrebbe creare una visualizzazione a schermo intero, in caso contrario? L'impostazione di questo valore su zero lo rende quasi invisibile.
LATO NOTA: il codice incollato sopra non posiziona UIDatePicker nella stessa posizione in cui si trova nell'immagine, ma il problema di sovrapposizione si verifica indipendentemente dall'ubicazione dell'UIDatePicker. Il problema del layering è solo in alto, non in basso.
inputView è disponibile in iOS 4.0 e versioni successive. Non posso usarlo se vuoi supportare 3.1 –