IOS中国际电话无模式
Posted
技术标签:
【中文标题】IOS中国际电话无模式【英文标题】:International phone no pattern in IOS 【发布时间】:2017-10-26 02:28:22 【问题描述】:我必须在文本字段 92 123 0123456789 中使用此模式。创建一个文本字段以在其中获取电话号码。在属性检查器中,我已经对数字键盘进行了键盘输入,在文本中我给出了从 0123456789
获取数字的模式。当我运行一个应用程序并首先输入任何值时,它也需要字母并且我的模式也不起作用。我们如何做到这一点,它只采用数字值,而值模式应该只使用这种模式 923330123456789
,因为它不应该在 92 之前采用 + 或 00 。
【问题讨论】:
【参考方案1】:你需要实现textField delegate
之类的东西,
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
// allow back space
if (string.length == 0)
return YES;
NSCharacterSet *set = [[NSCharacterSet characterSetWithCharactersInString:@"0123456789"] invertedSet];
if (([string rangeOfCharacterFromSet:set].location != NSNotFound) )
return NO;
if (range.location == 0 && ![string isEqual: @"9"])
return NO;
if (range.location == 1 && ![string isEqual: @"2"])
return NO;
return YES;
别忘了设置
yourTextField.delegate = self;
在你的viewDidload
。
更新:
您可以显示类似的警报,
if (range.location == 0 && ![string isEqual: @"9"])
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"First character must be 9" message:@"" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil];
[alert show]; // It's for demo. `UIAlertView` is deprecated , you can use `UIAlertController` instead
return NO;
【讨论】:
让我试试? @狮子 第一个字符为9
,第二个为2
!让我知道是否有其他要求!
这是完美的工作。如果用户尝试在您的代码中插入错误的模式,我们可以发出错误消息或敬酒吗? @狮子
是的!您可以在返回no
之前显示警报或敬酒!
在哪个下返回 no 。 @狮子【参考方案2】:
给你:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
newString = [newString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
NSCharacterSet *numbersOnly = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
NSCharacterSet *characterSetFromTextField = [NSCharacterSet characterSetWithCharactersInString:string];
BOOL stringIsValid = [numbersOnly isSupersetOfSet:characterSetFromTextField];
if(!stringIsValid)
return stringIsValid;
int length = (int)newString.length;
if(newString.length > 0 && newString.length < 3)
// Need to check if first two character 9 or 92.
NSString *firstTwoChar=[newString substringToIndex:length];
if([firstTwoChar isEqualToString:@"9"] || [firstTwoChar isEqualToString:@"92"])
return TRUE;
else
return FALSE;
NSLog(@"%@",firstTwoChar);
return YES;
【讨论】:
谢谢你的回答,但我是从另一个人那里得到的。 @Nirmalsinh 你能帮我解决我的另一个问题吗? @Nirmalsinh 是的,请告诉我 我通过在base64中编码来发送一些图像,但它们没有进入数据库。你知道我们如何将它发送到数据库。如果您给我您的电子邮件地址,我可以与您共享代码。 @Nirmalsinh 您可以使用AFNetworking将图片上传到服务器。 github.com/AFNetworking/AFNetworking以上是关于IOS中国际电话无模式的主要内容,如果未能解决你的问题,请参考以下文章