我正在创建一个应用程序,我希望当用户输入任何数据,然后用户输入,如果他输入,所以它不接受此输入并在文本字段中显示任何内容,如果它输入任何数字,那么它应该接受。
答案 0 :(得分:4)
以下代码可以为您提供帮助,这不允许在您的文本字段中输入除数字之外的任何其他文本。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
static NSCharacterSet *charSet = nil;
if(!charSet) {
charSet = [[[NSCharacterSet characterSetWithCharactersInString:@"0123456789"] invertedSet] retain];
}
NSRange strLocation = [string rangeOfCharacterFromSet:charSet];
return (strLocation.location == NSNotFound);
}
答案 1 :(得分:2)
为什么你这样做会更好地提供键盘风格
[txtField setKeyboardType:UIKeyboardTypeNumberPad]
或者你可以以编程方式完成:
NSString *nameRegex = @"[0-9]*";
NSPredicate *nameTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", nameRegex];
BOOL value = [nameTest evaluateWithObject:string];
if(value == YES)
{
// Do Somethings
}
else
{
// Do something
}
答案 2 :(得分:0)
您需要将Textfield的键盘类型设置为Numberpad。
使用代码尝试:(也可以使用XIB属性上的Inter face builder设置)
[txtFieldObj setKeyboardType:UIKeyboardTypeNumberPad];
答案 3 :(得分:0)
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (textField.tag==3)
{
NSUInteger lengthOfString = string.length;
for (NSInteger loopIndex = 0; loopIndex < lengthOfString; loopIndex++)
{
unichar character = [string characterAtIndex:loopIndex];
if (character < 46 || character==47)
return NO;
if (character > 57)
return NO;
}
}
将标记设置为textField。
答案 4 :(得分:0)
NSUInteger lengthOfString = string.length;
for (NSInteger loopIndex = 0; loopIndex < lengthOfString; loopIndex++) {
unichar character = [string characterAtIndex:loopIndex];
if (character < 48) return NO; // 48 unichar for 0
if (character > 57) return NO; // 57 unichar for 9
}
这是代码应该写在textfield中应该更改字符的范围