2013-08-23 2 views
0

Я видел несколько подходов к этому, но не могу заставить это работать.Ограничение ввода текста только альфа-символами

Я пытаюсь ограничить текстовое поле, чтобы ввести только альфа-символы. То есть ABCDEFabcdef (но все они).

Вот мой существующий метод:

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

    // Check for the back space/delete 
    if (string.length <=0) { 
     if ([self.wordArray lastObject]) { 
      [self.wordArray removeObjectsInRange:range]; 
      [self.tileCollectionView reloadData]; 
      return YES; 

     } 
    } 

    // Check to make sure the word is not above 16 characters, that should be enough right? 
    if (textField.text.length >= 16) { 
     NSLog(@"WOOO SLOW DOWN THE TEXT IS ABOVE 16"); 
     return NO; 
    } else { 
      [self.wordArray addObject:string]; 
      [self.tileCollectionView reloadData]; 
      return YES; 
    } 

} 

В настоящее время я проверяю на заднем пространстве и удалить последнюю запись из массива. Также, если письмо принято, я добавляю букву как объект в массив, то есть для чего-то еще. Но логика проверки ALPHA также должна учитывать это, только если письмо является «законным», если оно добавляет в массив и перезагружает представление коллекции.

+0

В чем проблема? Вы нашли правильного делегата для использования. –

ответ

5

Ну, в любом случае вы могли бы создать свой собственный набор символов для сравнения. Затем вы можете использовать свойство NSString stringByTrimmingCharactersInSet: и NSCharacterSet invertedSet, чтобы удалить все символы из набора, которые не соответствуют указанным вами символам. Затем, если итоговая строка соответствует входной строке, она не содержит недопустимых символов.

NSCharacterSet *myCharSet = [NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"]; 

NSString *input = @"a"; 

NSString *output = [input stringByTrimmingCharactersInSet:[myCharSet invertedSet]]; 

BOOL isValid = [input isEqualToString:output]; 

NSLog(@"%d",isValid); 
+0

Образцы, я заменил ссылку «input» на «string», которая является значением по умолчанию для этого метода. благодаря – StuartM

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