2012-02-27 3 views
0

Я пытался ограничить текстовое поле многими кодами, доступными там, в Интернете, но не повезло.xcode 4.2.1 - ограничение длины символа в TextField

Я добавил UIViewController<UITextFieldDelegate> в моем файле заголовка

и textField.delegate = self; в моем viewDidLoad

и реализованы следующие fundtion в моей .m файл:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string]; 
    return !([newString length] > 5); 
} 

этот стиль не ограничивает мой текст поле. Есть идеи?

+1

Возможный дубликат [iPhone SDK: установите максимальную длину символа TextField] (http://stackoverflow.com/questions/433337/iphone-sdk-set-max-character-length-textfield) – Ilanchezhian

+0

Что вы сделали, чтобы попытаться отладить его? Пробовали ли вы, например, журнал '[newString length ''? – dbrajkovic

+0

Я использую симулятор. и введите символ с пользовательской клавиатуры – Adeeb

ответ

2

Делают это следующим образом, как это было точной копией this

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    NSUInteger newLength = [textField.text length] + [string length] - range.length; 
    return (newLength > 5) ? NO : YES; 
} 
+0

Я сделал и все еще не работает !!!! – Adeeb

0

Строка замены - это только один символ, который был нажат, а не целая строка, поэтому вам нужно добавить It в текущее textfield.text перед подсчетом. Ваш подсчет, вероятно, всегда один (или больше, если вставить слово)

+0

извините, я не понимаю !! – Adeeb

+0

Ваша новая строка содержит только заменяющую строку, которая вводится только новым символом, поэтому она всегда имеет только 1 символ. Вы новичок, чтобы добавить textfield.text в newstring, чтобы получить полную строку. Может быть, с stringwithformat: @ "% @% @", textfield.text, replacementstring]; затем подсчитайте его. – Darren

0

Я реализовать это в моем коде, и она работает:

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

- (void)textFieldDidBeginEditing:(UITextField *)textField { 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textChanged:) name:UITextFieldTextDidChangeNotification object:textField]; 
} 


- (void)textChanged:(NSNotification *)textField { 
    NSString *text = [[textField object] text]; 
    NSString *last = [text substringFromIndex:[text length] -1]; 
    NSArray *accept = [NSArray arrayWithObjects:@"0", @"1", @"2", @"3", @"4", @"5", @"6", @"7" , @"8", @"9", @".", nil]; 

    for (int i=0; i<[accept count]; i++) { 
     NSLog(@"%@", [accept objectAtIndex:i]); 
     if (![last isEqualToString:[accept objectAtIndex:i]]) { 
      [[textField object] setText:[text substringToIndex:[text length]-1]]; 
     } 
    } 
} 
+0

Этот код не определяет размер лимита, и он дает мне ошибки, когда отладка говорит: Диапазон или индекс за пределами – Adeeb

+0

juts проверить, если длина его более 5 удаляет последний символ – Edig

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