Stu*_*rtM 0 uitextfield ios uitextfielddelegate ios6
我已经看到了多种方法,但无法实现这一点.
我试图限制文本字段只允许输入字母字符.即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;
}
}
Run Code Online (Sandbox Code Playgroud)
目前我检查后退空间并从数组中删除最后一个条目.此外,如果字母被接受,那么我将字母作为对象添加到数组中,即其他内容.但ALPHA检查的逻辑也应该考虑到这一点,只有当字母是"合法的"时才应该添加到数组并重新加载集合视图.
好吧,你可以做的一种方法是创建自己的字符集进行比较.然后,您可以利用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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1380 次 |
| 最近记录: |