iOS创建仅限数字的动态文本字段

时间:2014-08-15 12:52:31

标签: ios objective-c

目前我的应用程序动态创建文本字段。其中一些字段将允许所有字符,但其中一些我想只是数字(或我选择的任何字符集)。

我在这里找到了以下代码:

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

    //Allows backspace
    if([string length]==0){
        return YES;
    }

    //Character set limits to numeric characters
    NSCharacterSet *myCharSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
    for (int i = 0; i < [string length]; i++) {
        unichar c = [string characterAtIndex:i];
        if ([myCharSet characterIsMember:c]) {
            return YES;
        }
    }

    return NO;
}

这是创建文本字段的位置:

UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(x, y, width, 30)];
textField.borderStyle = UITextBorderStyleRoundedRect;
textField.font = [UIFont systemFontOfSize:15];
textField.autocorrectionType = UITextAutocorrectionTypeNo;
textField.keyboardType = UIKeyboardTypeDefault;
textField.autocapitalizationType = UITextAutocapitalizationTypeWords;
textField.returnKeyType = UIReturnKeyDone;
textField.textAlignment = NSTextAlignmentCenter;
textField.clearButtonMode = UITextFieldViewModeWhileEditing;

但我不太确定如何将其实现为动态创建的文本字段?

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

要在文本字段上调用该方法,您需要在ViewController中实现UITextFieldDelegate,并将textfield的delegate属性设置为ViewController。

@interface DemoViewController () <UITextFieldDelegate>

@end

然后在实施中:

textfield.delegate = self;

那应该有用。未经测试但相当简单。