gpt4 book ai didi

ios - UITableView 中的 UITextField 与 DatePicker 的 InputView

转载 作者:行者123 更新时间:2023-11-28 20:53:32 25 4
gpt4 key购买 nike

我正在尝试以下操作:

在每个单元格中,我都有日期开始和结束日期 UITextField。当用户按下任一 TextField 时,DatePicker 的 InputView 会出现,并带有完成按钮。

我的挑战是我只希望用户能够选择所选单元格内的任一 TextField,而不能选择其他。用户完成后必须在 InputView 上按 Done,以便应用可以验证并在必要时重新加载 TableView。

我的代码可以在显示“键盘”时很好地管理正常的单元格选择,但无法按照我的意愿管理 UITextField 行为。

我分享一些代码希望有人能帮助我:

- (void)keyboardWillShow:(NSNotification*)aNotification {
self.TableViewDiary.allowsSelection = NO;
}

- (void)keyboardWillBeHidden:(NSNotification*)aNotification {
self.TableViewDiary.allowsSelection = YES;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
ActivityDiaryCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ActivityDiaryCellId"];

cell.activity = [self.activitycollection objectAtIndex:indexPath.row];
cell.LabelName.text = cell.activity.name;
cell.TextFieldStartDt.text = [self FormatPrettyTime :cell.activity.startdt];
cell.TextFieldEndDt.text = [self FormatPrettyTime :cell.activity.enddt];

cell.datePickerStart.date = cell.activity.startdt;
cell.datePickerEnd.date = cell.activity.enddt;
cell.tag = indexPath.row;
cell.selectionStyle = UITableViewCellSelectionStyleNone;
return cell;
}

ActivityDiaryCell

- (void)awakeFromNib {
[super awakeFromNib];
// Initialization code

self.datePickerStart = [[UIDatePicker alloc] init];
self.datePickerStart.datePickerMode = UIDatePickerModeDateAndTime;
//self.datePickerStart.date = self.activity.startdt;
[self.datePickerStart addTarget:self action:@selector(datePickerStartValueChanged:) forControlEvents:UIControlEventValueChanged]; // method to respond to changes in the picker value

self.datePickerEnd = [[UIDatePicker alloc] init];
self.datePickerEnd.datePickerMode = UIDatePickerModeDateAndTime;
//self.datePickerEnd.date = self.activity.enddt;
[self.datePickerEnd addTarget:self action:@selector(datePickerEndValueChanged:) forControlEvents:UIControlEventValueChanged]; // method to respond to changes in the picker value

self.datePickerToolbar=[[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, self.bounds.size.width, 44)];
[self.datePickerToolbar setTintColor:[UIColor grayColor]];
UIBarButtonItem *doneBtn=[[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStylePlain target:self action:@selector(dismissPicker:)];
UIBarButtonItem *space=[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
[self.datePickerToolbar setItems:[NSArray arrayWithObjects:space,doneBtn, nil]];

self.TextFieldStartDt.delegate = self;
self.TextFieldStartDt.inputView = self.datePickerStart;
self.TextFieldStartDt.inputAccessoryView = self.datePickerToolbar;

self.TextFieldEndDt.delegate = self;
self.TextFieldEndDt.inputView = self.datePickerEnd;
self.TextFieldEndDt.inputAccessoryView = self.datePickerToolbar;
}

最佳答案

键盘显示是因为用户点击了文本字段,而不是因为他们选择了单元格。这就是 allowsSelection 不影响它的原因。

UITextFieldDelegate 处理移动到您的 UITableViewController。然后您可以轻松决定是否显示日期选择器:

  • 如果日期选择器被隐藏,显示它并记住文本框所在的单元格
  • 如果日期选择器已经可见,检查文本字段是否属于同一个单元格并更新日期选择器或什么都不做(通过覆盖 textFieldShouldBeginEditing(_:) 并返回 false)

关于ios - UITableView 中的 UITextField 与 DatePicker 的 InputView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54839640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com