UIDatePicker 仅在最后一个 Uitableviewcell 上替换键盘
UIDatePicker Replaces Keyboard only on Last Uitableviewcell
我有一个表视图,用户可以在其中添加一个包含两个 UITextField 的新行。用户可以使用 UIDatePicker 向每个文本视图添加一个日期(或者不添加一个,将其留空)。该过程完成并保存所有内容后,用户应该能够转到任何行并更新该行中的日期。问题是创建的最后一行之前的任何行仅在需要编辑时显示常规键盘。除了最后保存的行之外,我似乎无法让日期选择器显示出来。想知道为什么会这样吗?
我是这样设置日期选择器的:
-(void)showDatePicker{
_datePicker = [[UIDatePicker alloc] init];
UIToolbar *toolbar = [[UIToolbar alloc]init];
[toolbar sizeToFit];
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(done)];
doneButton.tintColor = [UIColor whiteColor];
UIBarButtonItem *flexibleSpaceLeft = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
toolbar.translucent = YES;
toolbar.barTintColor = [UIColor colorWithRed:8/255.0 green:46/255.0 blue:46/255.0 alpha:1];
[toolbar setItems:[NSArray arrayWithObjects:flexibleSpaceLeft,doneButton ,nil]];
[_readDateCell.startDateTextfield setInputAccessoryView:toolbar];
[_readDateCell.finishDateTextfield setInputAccessoryView:toolbar];
[_datePicker setDatePickerMode:UIDatePickerModeDate];
[_readDateCell.startDateTextfield setInputView:_datePicker];
[_readDateCell.finishDateTextfield setInputView:_datePicker];
}
该函数在两个地方调用 - 当文本字段开始编辑时和创建新行时:
-(void)textFieldDidBeginEditing:(UITextField *)textField {
[self showDatePicker];
}
-(void)addNewRow {
[self showDatePicker];
}
如果您正在为文本字段设置输入视图,则无需在 UITextField 的 didBeginEditing 委托方法上调用 showDatePicker。
然后您需要在您的viewDidLoad 方法中添加datePicker 代码。在 cellForRowAtIndexPath 中,您需要设置 inputAccessory 和 inputView
我有一个表视图,用户可以在其中添加一个包含两个 UITextField 的新行。用户可以使用 UIDatePicker 向每个文本视图添加一个日期(或者不添加一个,将其留空)。该过程完成并保存所有内容后,用户应该能够转到任何行并更新该行中的日期。问题是创建的最后一行之前的任何行仅在需要编辑时显示常规键盘。除了最后保存的行之外,我似乎无法让日期选择器显示出来。想知道为什么会这样吗?
我是这样设置日期选择器的:
-(void)showDatePicker{
_datePicker = [[UIDatePicker alloc] init];
UIToolbar *toolbar = [[UIToolbar alloc]init];
[toolbar sizeToFit];
UIBarButtonItem *doneButton = [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(done)];
doneButton.tintColor = [UIColor whiteColor];
UIBarButtonItem *flexibleSpaceLeft = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
toolbar.translucent = YES;
toolbar.barTintColor = [UIColor colorWithRed:8/255.0 green:46/255.0 blue:46/255.0 alpha:1];
[toolbar setItems:[NSArray arrayWithObjects:flexibleSpaceLeft,doneButton ,nil]];
[_readDateCell.startDateTextfield setInputAccessoryView:toolbar];
[_readDateCell.finishDateTextfield setInputAccessoryView:toolbar];
[_datePicker setDatePickerMode:UIDatePickerModeDate];
[_readDateCell.startDateTextfield setInputView:_datePicker];
[_readDateCell.finishDateTextfield setInputView:_datePicker];
}
该函数在两个地方调用 - 当文本字段开始编辑时和创建新行时:
-(void)textFieldDidBeginEditing:(UITextField *)textField {
[self showDatePicker];
}
-(void)addNewRow {
[self showDatePicker];
}
如果您正在为文本字段设置输入视图,则无需在 UITextField 的 didBeginEditing 委托方法上调用 showDatePicker。
然后您需要在您的viewDidLoad 方法中添加datePicker 代码。在 cellForRowAtIndexPath 中,您需要设置 inputAccessory 和 inputView