iPhone: Как управлять методами делегата UITextfield для динамического числа пользовательских ячеек - PullRequest
2 голосов
/ 13 августа 2011

У меня есть динамическое число текстовых полей в моем табличном представлении, я помещаю каждое текстовое поле в пользовательскую ячейку в IB и загружаю ячейки по nibName.

Я хочу проверить и показать предупреждение, когда пользователь вводит данные, также при редактировании. Я хочу получить входное значение от пользователя и сохранить его в соответствующем объекте.

например, вот некоторые методы делегата, которые я могу использовать:

- (void)textFieldDidEndEditing:(UITextField *)textField{
   //save the data
}

- (IBAction)textFieldDoneEditing:(id)sender {
    //hide the keypad when done is pressed
    [sender resignFirstResponder];
}

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange{}

2 вопроса:

1-При получении пользовательского ввода и проверке ввода, как я узнаю, какой делегат текстового поля запущен, так как есть динамические числа ячеек и текстовых полей, и как я могу управлять этим?

2-Для сокрытия клавиатуры я сделал это, но не уверен, что это правильно; В IB я открыл пользовательскую ячейку -> щелкните правой кнопкой мыши поле uitext и подключил его didEndonExit к FirstResponder методу textFieldDoneEditing. Это работает, но я не могу вернуться, если я не добавил никаких символов в текстовое поле. поэтому он заставляет что-то написать, чтобы нажать кнопку.

Ответы [ 2 ]

7 голосов
/ 13 августа 2011

Относительно вашего первого вопроса ...

В следующем коде я предполагаю, что у вас есть один UITextField в каждой ячейке.Я также предполагаю, что вы создали UITableViewCell подкласс CustomCell, который содержит UITextField.

#pragma mark - UITableViewDataSource 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
   static NSString *CellIdentifier = @"CellIdentifier";
   CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
   if (!cell)
   {
      cell = [[[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault identifier:CellIdentifier] autorelease];
      cell.textField.tag = indexPath.row;
      cell.textField.delegate = self;
   }
   return cell; 
}

#pragma mark - UITextFieldDelegate 

- (void)textFieldDidEndEditing:(UITextField *)textField
{
   NSLog(@"textField tag: %d", textField.tag); // this will show which textField did end editing ...
}
5 голосов
/ 13 августа 2011

Относительно вашего второго вопроса;если я правильно понимаю вашу проблему, снятие флажка «Автоматически активировать клавишу возврата» в свойствах текстового поля в IB должно позволить вам нажимать кнопку возврата, даже если она пуста.Я проверил это на простом текстовом поле в UIView, но оно должно работать в вашем случае.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...