2

textField の文字列値に設定したい UIDatePicker があります。2 番目の textField をタップすると、UIDatePicker が最初の textField の値を取得し、それを datePicker の開始時間として使用するようにします。

これは正しく機能しますが、2 番目の textField を 2 回タップした場合のみです。初めてタップすると、テキスト フィールドが選択され (黄色に変わります)、時刻は毎回午前 6 時に設定されます。textField をもう一度タップすると、timePicker が正しく設定されています...

これは、1 回タップした結果です。

ここに画像の説明を入力

これは 2 回目のタップの結果です。

ここに画像の説明を入力

更新:これはタップ用に実装されたコードです:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{

[textField resignFirstResponder];   //  don't display the k/b

if (textField.tag == kStartTimeTag)  {
    textFieldTag = kStartTimeTag;
    textField.backgroundColor = [UIColor colorWithRed:252.0/255.0 green:255.0/255.0 blue:197.0/255.0 alpha:1.0];
}
else if (textField.tag == kEndTimeTag)  {
    textField.backgroundColor = [UIColor colorWithRed:252.0/255.0 green:255.0/255.0 blue:197.0/255.0 alpha:1.0];    
    textFieldTag = kEndTimeTag;

    //  now, set end time equal to start time
    [self.oTimePicker setDate:dateFromString(oStartTime.text, @"HH:mm")];

}

return NO;

}

最初のタップでこれを機能させる方法はありますか?

4

2 に答える 2

1

関数dateFromString()で何をしているのかを示していないため、コードの何が問題なのかわかりません。以下のコードは、1回のタップで機能しました。

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{

    [textField resignFirstResponder];   //  don't display the k/b

    if (textField.tag == 1)  {
        textField.backgroundColor = [UIColor colorWithRed:252.0/255.0 green:255.0/255.0 blue:197.0/255.0 alpha:1.0];
    }
    else if (textField.tag == 2)  {
        textField.backgroundColor = [UIColor colorWithRed:252.0/255.0 green:255.0/255.0 blue:197.0/255.0 alpha:1.0];
        NSDate *startDate = [self timeFromString:self.oStartTime.text];
        [self.oTimePicker setDate:startDate];
    }
    return NO;
}

-(NSDate *)timeFromString:(NSString *)  timeString {
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    formatter.dateFormat = @"HH:mm";
    return [formatter dateFromString:timeString];
}
于 2013-07-28T19:43:11.773 に答える
1

私が必要としていたことをする必要がある人のための解決策は次のとおりです。

    [self.oTimePicker setDate:dateFromString(self.oStartTime.text, @"HH:mm")];
    [self.oTimePicker reloadInputViews];

重要なのは 2 行目です: -reloadInputViews

皆さんの提案に感謝します...

于 2013-07-31T19:52:05.527 に答える