我有一个 UIDatePicker,我想将其设置为文本字段中的字符串值。当我点击第二个文本字段时,我希望 UIDatePicker 获取第一个文本字段中的值并将其用作 datePicker 中的开始时间。
这可以正常工作,但仅当我点击第二个文本字段两次时。我第一次点击它时,文本字段被选中(变成黄色),并且时间设置为每次上午 6:00!当我再次点击文本字段时,时间选择器设置正确...
这是点击一次的结果:
这是第二次点击的结果:
更新:这是为点击实现的代码:
- (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;
}
有没有办法让这个在第一次点击时就起作用?
最佳答案
我不确定您的代码有什么问题,因为您没有显示您在函数 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];
}
关于objective-c - 为什么我必须点击 UIDatePicker 两次才能设置时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17911754/