Tengo UIPickerView
en mi UIView
junto con UITextField
. Dejo que el usuario seleccione un valor del selector o ingrese un valor personalizado en el campo de texto.UIPickerView - la selección de la 1ra fila no llama a didSelectRow
Cuando el usuario selecciona cualquier opción del selector, los valores de las variables cambian bien (en el método pickerView:didSelectRow:inComponent:
). Pero si el usuario no selecciona ningún valor en el selector (porque quieren seleccionar la primera opción que ya está seleccionada), este método no se llama y la selección no se refleja en la variable.
He intentado establecer el valor por defecto de la variable a la primera opción en el selector. Pero en ese caso, cuando el usuario edite el campo de texto, la variable tendrá el texto del campo de texto. Ahora, si el usuario decide elegir el primer valor nuevamente, el nuevo valor no se refleja en la variable.
¿Cómo puedo superar esto? Gracias.
Aquí está el código correspondiente
En mi viewDidLoad
tengo esta declaración para establecer el selectText
a la primera opción del selector de forma predeterminada
[self setSelectText:[myArray objectAtIndex:0]];
textFieldShouldReturn
- (BOOL)textFieldShouldReturn:(UITextField *)txtField{
[txtField resignFirstResponder];
[self setSelectText:txtField.text];
return YES;
}
PickerViewDelegate de didSelectRow
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
// report the selection to the UI label
[self setSelectText:[myArray objectAtIndex:[pickerView selectedRowInComponent:0]]];
}
El problema surge cuando el usuario edita el texto y luego decide que después de todo, quiere utilizar el primer valor del selector. En ese caso, cerrarán el teclado y harán clic en la primera opción del selector (que ya está seleccionado). Esta acción no llama al didSelectRow
, por lo que el valor de selectText no cambia.
Para que el usuario pueda cambiar el valor de selectText
, primero tiene que seleccionar algún otro valor del selector y luego seleccionar la 1ª fila.
Si puede, publique parte de su código en relación con este problema. Esto ayudará con la resolución de problemas. –