2013-08-30 4 views
1

Я пытаюсь создать специальный UITextField, где текст будет отделен после некоторого количества символов. Я знаю, что -shouldChangeCharactersInRange может использоваться делегатом от UITextField.shouldChangeCharactersInRange со специальным разделением

Теперь мне нужно более сложное разделение при вводе текста в UITextField. Мне нужны символы, разделенные одним пробелами после каждых 4 символов. Последние 2 символа также должны быть разделены пробелом от остального.

Пример: XXNL XNLX XLMD XMLD XX

Я знаю, что я должен использовать этот метод ...

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

Но не знаю, что делать с этим методом. Может кто-нибудь мне помочь ?

+0

попытайтесь сохранить предыдущий символ и сравнить текущий символ, а предыдущий символ - это пробел, а затем вернуться. В противном случае разрешить. ter символ разрешен и пробел после пробела не допускается. – NHS

+0

Да, я пробовал этот. Необходимо добавлять только пробелы. Пользователь должен ввести значение, как обычно, и система должна добавить пробелы. – user1713954

ответ

-1
See if you want that style of text then after every 4 characters in textfield text just add one space.and if length is total characters you want then don't allow any other characters.In shouldchangecharactersinRange: you have to insert 1 space programatically 

if(textfield.text.length % 4 == 0) then 
    string = [string stringbyappendingstring:@""]; 

Do this it will fix your requirement and dont accept any characters after the length you need,like 

if(textfield.text.length == someinteger) then 
    don't accept the string just return NO; 
0

В этом методе делегата вы должны построить строку, содержащую текст. Затем вы можете проверить, если длина строки по модулю 5 равна 4 (так что после 4 символов она срабатывает, а после 9 символов (4 + 1 пробел + другое 4) она снова запускается и т. Д. Если проверка срабатывает, вы добавляете пробел @»" по тексту TextField.

проблема с выполнением этого является то, что если пользователь перемещает курсор и изменяет текст, то все теряется.

Другим способом вы можете сделать это затем обрезать строку (удалить все пробелы) в том же методе, а затем добавить пробелы снова каждые 4 символа.

Смежные вопросы