#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;
}