2013-08-23 163 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

簡單說法,我已將「輸入」引用替換爲「字符串」,該字符串是該方法的默認值。謝謝 – StuartM

相關問題