Ios 如何在此代码中限制UIalertview?
我已经创建了一个美国格式的手机号码。此代码不显示字母和特殊字符。它成功地显示但显示了Ios 如何在此代码中限制UIalertview?,ios,uialertview,Ios,Uialertview,我已经创建了一个美国格式的手机号码。此代码不显示字母和特殊字符。它成功地显示但显示了UIAlertview,当用户在UITextfield中输入字母和特殊字符时,它会显示一些UIAlertview。如何控制UIAlertView?我只想显示一个Alertview 这是我已经拥有的代码: if(textField==mobileNo) { NSCharacterSet *myCharSet = [NSCharacterSet characterSetWithCharacte
UIAlertview
,当用户在UITextfield
中输入字母和特殊字符时,它会显示一些UIAlertview
。如何控制UIAlertView
?我只想显示一个Alertview
这是我已经拥有的代码:
if(textField==mobileNo)
{
NSCharacterSet *myCharSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
for (int i = 0; i < [string length]; i--) {
unichar c = [string characterAtIndex:i];
if (![myCharSet characterIsMember:c]) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Alphbets and Special characters not allowed" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
return NO;
}
}
}
if(textField==mobileNo)
{
NSCharacterSet*myCharSet=[NSCharacterSet characterSetWithCharactersInString:@“0123456789”];
对于(int i=0;i<[字符串长度];i--){
unichar c=[string characterAtIndex:i];
如果(![myCharSet成员:c]){
UIAlertView*alert=[[UIAlertView alloc]initWithTitle:@“错误”消息:@“不允许使用Alphbets和特殊字符”委托:自取消按钮:@“确定”其他按钮:无,无];
[警报显示];
返回否;
}
}
}
您可以尝试以下方法。。。但这不是一个很好的解决方案
在标题中声明一个BOOL,以检查警报视图是否已显示,如下所示:
BOOL alertCheck;
在viewDidLoad中,将其设置为否:
alertCheck = NO;
然后在代码中,在决定显示alertview之前进行检查
if(textField==mobileNo) {
NSCharacterSet *myCharSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];
for (int i = 0; i < [string length]; i--) {
unichar c = [string characterAtIndex:i];
if (![myCharSet characterIsMember:c]) {
if (alertCheck == NO) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Alphbets and Special characters not allowed" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
alertCheck = YES;
}
return NO;
}
}
}
if(textField==mobileNo){
NSCharacterSet*myCharSet=[NSCharacterSet characterSetWithCharactersInString:@“0123456789”];
对于(int i=0;i<[字符串长度];i--){
unichar c=[string characterAtIndex:i];
如果(![myCharSet成员:c]){
如果(alertCheck==否){
UIAlertView*alert=[[UIAlertView alloc]initWithTitle:@“错误”消息:@“不允许使用Alphbets和特殊字符”委托:自取消按钮:@“确定”其他按钮:无,无];
[警报显示];
alertCheck=是;
}
返回否;
}
}
}
您可以尝试以下方法:
if (![myCharSet characterIsMember:c]) {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
//show the UIAlertView
});
}
那代码不太好。您只是检查字符串值是否为数字。为此,您可以使用以下方法:
bool isNumber = [[NSScanner scannerWithString: string] scanInt:nil]
if (!isNumber) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Alphbets and Special characters not allowed" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
}
代码似乎更清晰、更简单
希望有帮助 这段代码是用什么方法编写的?何时调用?在何处申报BOOL alertcheck@正如我在回答中所说的,在你的头(.h)代码文件中。@Dan为什么只为了检查字符串是否是数字而编写12行代码?这对任何人都没有帮助。这代码不好。@FabKremer冷静点。我从来没有说过我的解决方案是好的。事实上,我回答的第一行说,这不是一个好的解决方案。但它确实有效,而且同样容易实现。这取决于要求他们决定使用哪种解决方案的人。@Dan我很平静。我只是说,你可以试着在快速发布之前想出好的解决方案,以提高你的声誉:)对于这样一个小问题,这不是有点过分了吗?在这种情况下,使用一个简单的BOOL并检查它更合适吗?也许可以使用一个静态变量来代替token,但我更喜欢这种方法,而不是声明一个属性,因为这样更易于读取和跟踪。我个人不认为这是一种过分的做法,因为它不会给代码增加太多的复杂性