私は とUIPickerView
一緒UIView
に を持っていUITextField
ます。ユーザーがピッカーから値を選択するか、テキスト フィールドにカスタム値を入力できるようにしています。
ユーザーがピッカーから任意のオプションを選択すると、変数値が ( pickerView:didSelectRow:inComponent:
) メソッドで細かく変更されます。ただし、ユーザーがピッカーで値を選択しない場合 (既に選択されている最初のオプションを選択したい場合)、このメソッドは呼び出されず、選択は変数に反映されません。
変数のデフォルト値をピッカーの最初のオプションに設定してみました。ただし、その場合、ユーザーがテキスト フィールドを編集すると、変数にはテキスト フィールドのテキストが含まれます。ユーザーが最初の値を再び選択することにした場合、新しい値は変数に反映されません。
どうすればこれを克服できますか?ありがとう。
関連するコードは次のとおりです
私の場合、デフォルトでピッカーの最初のオプションviewDidLoad
を設定するこのステートメントがありますselectText
[self setSelectText:[myArray objectAtIndex:0]];
textFieldShouldReturn
- (BOOL)textFieldShouldReturn:(UITextField *)txtField{
[txtField resignFirstResponder];
[self setSelectText:txtField.text];
return YES;
}
PickerViewDelegate の 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]]];
}
問題は、ユーザーがテキストを編集した後、結局ピッカーの最初の値を使用したいと判断したときに発生します。その場合、彼らはキーボードを閉じて、ピッカーの最初のオプション (すでに選択されています) をクリックします。このアクションは呼び出さdidSelectRow
れないため、selectText の値は変更されません。
ユーザーが の値を変更できるようにするにはselectText
、まずピッカーから他の値を選択し、次に 1 行目を選択する必要があります。