【发布时间】:2015-05-18 05:14:14
【问题描述】:
我想在UITextfield 中显示“1 (xxx)-(xxx)-(xxx)”,并且只输入 10 位数字。
- 有效的 1 到 9 个数字。
- 才开始1。
- 如果输入 0,则不会被采纳。
我如何做到这一点?
【问题讨论】:
标签: ios
我想在UITextfield 中显示“1 (xxx)-(xxx)-(xxx)”,并且只输入 10 位数字。
我如何做到这一点?
【问题讨论】:
标签: ios
我在我的一个项目中完成了我们的电话号码验证。希望这对您有所帮助。
-(void)textFieldDidBeginEditing:(UITextField *)textField {
[textField performSelector:@selector(shouldChangeTextInRange:replacementText:)];
}
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSString *text = textField.text;
NSString *acceptedcharacters = @"0123456789-/";
NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:acceptedcharacters] invertedSet];
const char * _char = [string cStringUsingEncoding:NSUTF8StringEncoding];
int isBackSpace = strcmp(_char, "\b");
if (isBackSpace == -8) {
NSLog(@"deleted");
}
else {
if (textField.text.length == 1) {
textField.text = [NSString stringWithFormat:@"%@-",text];
return YES;
}
if (textField.text.length == 5) {
textField.text = [NSString stringWithFormat:@"%@-",text];
return YES;
}
if (textField.text.length == 9) {
textField.text = [NSString stringWithFormat:@"%@-",text];
return YES;
}
}
// if (textField == self.phoneNumber_txtField) {
NSUInteger newLength = [textField.text length] + [string length] - range.length;
return (newLength > 14) ? NO : YES;
// }
NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
return [string isEqualToString:filtered];
}
【讨论】:
UITextField的代表。您将 texfield 委托设置为 self。并将此方法放在您的 ViewController 中。会自动调用
-(void)textFieldDidBeginEditing:(UITextField *)textField { [textField performSelector:@selector(shouldChangeTextInRange:replacementText:)]; }
-(void)textFieldDidBeginEditing:(UITextField *)textField 方法中显式调用它。就像我上面提到的