Какой метод делегата UITextField будет вызываться без использования клавиатуры? - PullRequest
0 голосов
/ 10 февраля 2012

Я нахожусь в ситуации, когда пользователь вводит данные в UITextField без нажатия клавиши, он нажимает кнопку «Далее», чтобы перейти на следующую страницу.

That textfield is in custom cell with UITextView. Теперь я хочу захватить все в каждом текстовом поле и UITextView этого UITableView, когда пользователь входит в него, потому что во время нажатия кнопки Next мне нужно сохранить данные.

До сих пор я реализовал следующие методы, но ни один из них не вызывался, когда пользователь вводит данные в TextField и напрямую нажимает кнопку «Далее», не возвращая клавиатуру

- (void)textFieldDidEndEditing:(UITextField *)textField
{

    NSString *strTitle = [textField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
    textField.text = strTitle;


}


- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{   

    return YES;
}

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
    [textField resignFirstResponder];
    return YES;
}

Что может быть лучшим средством для сохранения из этих TextFields до следующего?

Ответы [ 4 ]

0 голосов
/ 10 февраля 2012

Если вы используете пользовательскую ячейку, используйте эту

[[(CustomCellName *)[tableViewName cellForRowAtIndexPath:indexPathOfRowNo] textFieldName] text];
0 голосов
/ 10 февраля 2012

textFieldDidEndEditing не всегда вызывается, когда вы теряете фокус.см. пост https://stackoverflow.com/a/1229914/641062. Он объясняет немного больше о поведении метода endEditing.

Поэтому необходимо сохранить данные в этом методеЭто будет вызываться для каждого введенного вами символа.

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{   

    return YES;
}
0 голосов
/ 10 февраля 2012

Если вы просто хотите знать содержимое вашего текстового поля и текстового обзора, когда пользователь нажимает следующую кнопку, вам не нужно знать, какой метод делегата будет вызван, вы можете просто получить эти значения в методе IBAction для следующей кнопки

-(IBAction)nextButtonTapped {
    textFieldData = myTextField.text;
    textViewData =  myTextView.text;

   //code to push the next view goes here
}

Надеюсь, это поможет!

0 голосов
/ 10 февраля 2012

По крайней мере, один из них определенно должен быть вызван.

Может быть что-то действительно простое: вы дважды проверили, что класс, реализующий эти методы, действительно был назначен делегатом рассматриваемого UITextField

...