Mam UIPickerView
na moim UIView
wraz z UITextField
. Pozwalam użytkownikowi wybrać wartość z selektora lub wprowadzić niestandardową wartość w polu tekstowym.UIPickerView - wybór pierwszego rzędu nie wywołuje didSelectRow
Gdy użytkownik wybierze dowolną opcję z selektora, wartości zmiennych zostaną zmienione w porządku (w metodzie pickerView:didSelectRow:inComponent:
). Ale jeśli użytkownik nie wybierze żadnej wartości w selektorze (bo chce wybrać pierwszą opcję, która jest już wybrana), ta metoda nie zostanie wywołana, a wybór nie zostanie odzwierciedlony w zmiennej.
Próbowałem ustawić domyślną wartość zmiennej w pierwszej opcji w selektorze. Ale w takim przypadku, gdy użytkownik edytuje pole tekstowe, zmienna będzie zawierała tekst pola tekstowego. Teraz, jeśli użytkownik zdecyduje się ponownie wybrać pierwszą wartość, nowa wartość nie zostanie odzwierciedlona w zmiennej.
Jak mogę to przezwyciężyć? Dzięki.
Oto odpowiedni kod
w moim viewDidLoad
mam to oświadczenie, aby ustawić selectText
do pierwszej opcji z próbnika domyślnie
[self setSelectText:[myArray objectAtIndex:0]];
textFieldShouldReturn
- (BOOL)textFieldShouldReturn:(UITextField *)txtField{
[txtField resignFirstResponder];
[self setSelectText:txtField.text];
return YES;
}
PickerViewDelegate użytkownika 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]]];
}
Problem pojawia się, gdy użytkownik edytuje tekst, a następnie decyduje, że mimo wszystko chce wykorzystać pierwszą wartość próbnika. W takim przypadku odłożą klawiaturę i klikną pierwszą opcję selektora (który jest już wybrany). Ta akcja nie wywołuje didSelectRow
, więc wartość selectText nie jest zmieniana.
Aby użytkownik mógł zmienić wartość selectText
, musi najpierw wybrać inną wartość z selektora, a następnie wybrać pierwszy wiersz.
Jeśli możesz, opublikuj część kodu związaną z tym problemem. Pomoże to w rozwiązywaniu problemów. –