Por lo que yo sé, será un desastre si lo reduce.
a) UITableView + UIPickerView
Le recomiendo que utilice la "fila en UITableView + UIPickerView" para hacer esto. Puede usar una fila en tableView como dropDownList en Windows, cuando toque en esta fila se mostrará pickerView (oculto al principio). b) Si tiene una larga lista de datos en tableView y solo uno de los elementos necesita para recoger datos, debe desplazarse por la vista utilizando el siguiente método (asegúrese de calcular la posición original de pickerView como lo hará) mover hacia arriba/abajo juntos):
-(void)setViewMove:(BOOL)moveUP offset:(CGFloat)offset
{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];
CGRect rect = self.view.frame;
if(moveUP)
{
rect.origin.y-=offset;
rect.size.height+=offset;
}
else //move down
{
rect.origin.y+=offset;
rect.size.height-=offset;
}
self.view.frame = rect;
[UIView commitAnimations];
}
c) también puede añadir otro punto de vista para el recogedor y volver a este punto de vista cuando se ha seleccionado algo.
Mi conclusión es:
Si tiene pocas líneas en tableView, utilice a.
Si tiene muchas líneas en tableView pero solo una de ellas necesita selector, use b.
Si tiene muchas líneas en tableView y muchas de ellas necesitan selector, use c.
Pruebe un UIScrollView y en el didScroll: método del delegado hacen el chasquido si la velocidad de desplazamiento cae por debajo de un umbral. – Dimitris