在textfield中,我想限制数字(如(1234567890))和特殊字符,但我希望允许使用字母数字字符。我怎么想这样做?如何限制objective-c中的数字和特殊字符
0
A
回答
0
使用的UITextField委托方法
textField:shouldChangeCharactersInRange:replacementString:
要检查即将被替换,如果你允许它然后返回是如果没有则没有返回的字符串。
这是一些更多的信息。
0
试试下面的代码
+ (BOOL)isNumber:(NSString *)value {
if ((value == nil) || ([@"" isEqualToString:value])) {
return NO;
}
int l = [value length];
BOOL b = NO;
for (int i = 0; i < l; i++) {
NSString *str =
[[value substringFromIndex:i]
substringToIndex:1];
const char *c =
[str cStringUsingEncoding:
NSASCIIStringEncoding];
if (c == NULL) {
b = NO;
break;
}
if ((c[0] >= 0x30) && (c[0] <= 0x39)) {
b = YES;
} else {
b = NO;
break;
}
}
if (b) {
return YES;
} else {
return NO;
}
}
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if ((string != nil) && (string != @"")) {
if (![self isNumber:string]) {
return NO;
}
}
return YES;
}
0
你需要写一个NSFormatter
并将其分配给您的文本字段。这里是一个NSFormatter
的示例实现,它使用NSRegularExpression
来验证NSTextField
内容。
@interface XXNameElementFormatter : NSFormatter
@end
@implementation HcNameElementFormatter {
NSRegularExpression *_re;
}
- (id)init {
self = [super init];
if (self) {
[self initRegularExpression];
}
return self;
}
- (void)awakeFromNib
{
[self initRegularExpression];
}
- (void)initRegularExpression
{
NSError *reError;
_re = [NSRegularExpression regularExpressionWithPattern:@"^[a-z]*$" options:NSRegularExpressionCaseInsensitive error:&reError];
NSAssert(_re != nil, @"Error in regular expression, error: %@", reError);
}
- (NSString *)stringForObjectValue:(id)obj
{
return obj;
}
- (BOOL)getObjectValue:(out __autoreleasing id *)obj forString:(NSString *)string errorDescription:(out NSString *__autoreleasing *)error
{
*obj = string;
return YES;
}
- (BOOL)isPartialStringValid:(NSString *__autoreleasing *)partialStringPtr proposedSelectedRange:(NSRangePointer)proposedSelRangePtr originalString:(NSString *)origString originalSelectedRange:(NSRange)origSelRange errorDescription:(NSString *__autoreleasing *)error
{
NSParameterAssert(partialStringPtr != nil);
NSString *partialString = *partialStringPtr;
NSRange firstMatch = [_re rangeOfFirstMatchInString:*partialStringPtr options:0 range:NSMakeRange(0, partialString.length)];
return firstMatch.location != NSNotFound;
}
@end
相关问题
- 1. 如何限制searchView中的特殊字符和数字?
- 2. jQuery限制特殊字符和限制字段数
- 3. 限制特殊字符
- 4. 在java编程中限制特殊字符和数字
- 5. 限制用户输入特殊字符和数字
- 6. 如何检测字符串中的特殊字符和数字?
- 7. 如何限制字符串不允许使用数字或特殊字符?
- 8. 如何禁用UITextField中的字母,数字和特殊字符?
- 9. 使用jQuery限制特殊字符
- 10. 如何使用xamarin限制iOS中的特殊字符?
- 11. 如何限制asp.net文本框中特殊字符的组合?
- 12. 如何检查字符串中的字符,数字和特殊字符?
- 13. 限制HTML和AngularJs中的特殊字符
- 14. 如何禁用文本框中的特殊字符和数字?
- 15. jQuery:如何限制重复/继续的特殊字符
- 16. AngularJS中的整数和特殊字符
- 17. 如何使用jquery阻止或限制输入字段中的特殊字符?
- 18. 限制2位正数没有任何特殊字符
- 19. 数字和特殊字符不替换
- 20. 验证数字和特殊字符'_'
- 21. 如何仅反转字符串不在行中的数字和特殊字符
- 22. 字符串枚举类有限制的价值观和特殊字符
- 23. 特殊字符和MediaPlayer的
- 24. 的fwrite()和特殊字符
- 25. jQuery验证 - 如何限制用户在文本字段中输入数字和特殊字符?
- 26. Java - 如何删除字符串数组中的特殊字符?
- 27. PHP复制()问题和特殊字符
- 28. 如何重新映射VIM中的数字键和数字键特殊字符
- 29. 如何显示特殊字符和curvearrowleft;
- 30. 如何分割特殊字符'##'和'}'
@Merlevede请先阅读,我不是只要求数字。我想限制数字,特殊字符并希望允许APLHA NUMERICS。 –
在我建议的链接中有一个可以根据需要进行调整的答案。不要期望例子正是你想要的。 – Merlevede