我有一个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;
}
有没有办法让这个工作在第一次点击?
答案 0 :(得分: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];
}
答案 1 :(得分:1)
对于任何需要做我需要做的事情的人来说,这是解决方案:
[self.oTimePicker setDate:dateFromString(self.oStartTime.text, @"HH:mm")];
[self.oTimePicker reloadInputViews];
键是第二行:-reloadInputViews
感谢大家的建议......