2

我有一个 UIDatePicker,我想将它设置为 textField 中的字符串值。当我点击第二个 textField 时,我希望 UIDatePicker 获取第一个 textField 中的值并将其用作 datePicker 中的开始时间。

这可以正常工作,但只有当我点击第二个 textField 两次时。我第一次点击它时,文本字段被选中(变成黄色)并且每次都设置为早上 6:00 !当我再次点击 textField 时,timePicker 设置正确......

这是敲击一次的结果:

在此处输入图像描述

这是第二次点击的结果:

在此处输入图像描述

更新:这是为水龙头实现的代码:

- (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() 中显示你在做什么。只需点击一下,下面的代码就对我有用:

- (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];

关键是第二行:-reloadInputViews

谢谢大家的建议...

于 2013-07-31T19:52:05.527 回答