Перезагрузка UITextField iOS после нажатия клавиши

#ios #objective-c

#iOS #objective-c

Вопрос:

Я создаю простое приложение, в котором есть текстовое поле и текстовое представление. Все, что мы пишем в текстовом поле, будет обновляться в textview (оба находятся в одном представлении, и это корневое представление). текстовое поле будет обновляться каждый раз, когда я нажимаю любую клавишу на клавиатуре. Я знаю, что метод делегирования «textfielddidEditing» помогает, но это помогает только тогда, когда мы нажимаем на поле или нажимаем назад. Мне нужен метод, который вызывается каждый раз, когда я нажимаю что-либо на клавиатуре.

Любая помощь приветствуется. Я все еще изучаю iOS

Комментарии:

1. Вы можете использовать — (void)textFieldDidChange:(UITextField *)Текстовое поле

Ответ №1:

Пожалуйста, используйте метод делегирования текстового поля ниже. Его легко и просто использовать со всеми механизмами добавления и удаления. Вы также можете удалить несколько символов путем выбора. Просто сохраните значение newString в своем TextView

 -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    NSMutableString *newString = [NSMutableString stringWithString:textField.text];
    if (range.length > 0) {
        [newString replaceCharactersInRange:range withString:string];
    }
    else {
        [newString appendString:string];
    }
    NSLog(@"%@",newString);
    return YES;
}
  

Ответ №2:

Вы можете использовать метод делегирования UITextField. Он вызывается каждый раз, когда вы нажимаете что-либо на клавиатуре. Напишите свой код в соответствии с вашими требованиями..

 -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if (textField.text.length>0)
    {
        self.yourtextview.text=textField.text;
    }
    return YES;

}
  

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

Комментарии:

1. Почему else , когда вы явно не используете его? Кажется излишним.

2. Метод работает на месте .. но когда я запускаю код, я получаю сообщение «Свойство .text не найдено для объекта в UIView», мое UITextField равно textFieldInput, а UITextView — textViewInput. и я соответствующим образом изменился, но код не выполняется.. Я подтвердил этот метод, запустив NSLog

3. @user3755838 textField свойство в ответе будет вашим textField , которое передается в метод. Однако в вашем методе происходит то, что вы, похоже, вызываете text UIView свойство, но UIView не реагируете на `text.

Ответ №3:

Приведенный выше код, упомянутый Vidhyanad900, будет работать. Но если это произойдет, если пользователь удалит текст. (Нажимает пробел или выбирает полный текст и удаляет его)

Следовательно, изменение кода

 -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
  int iNewLength = [textField length];
  if([text isEqualToString:@""])      //If text is deleted
  {
    if([textField selectedTextRange])        //If Text is Seleceted And Deleted
        iNewLength = [textField length] - [textField selectedRange].length;
    else
        iNewLength = [textField length] - 1;        
  }
  if (iNewLength > 0)
  {
    self.yourtextview.text=textField.text;
  }
  return YES;
}