在iOS中验证UITextField和电话号码

在iOS中验证UITextField和电话号码,ios,iphone,objective-c,Ios,Iphone,Objective C,我在执行代码时创建了两个文本字段(用户名和电话号码),只有text1(用户名)被执行。我得到了警报视图,以同样的方式,我试图给出警报视图,即text2(电话号码),它必须允许数字, 但在我的代码中无法执行second if statement-text2(电话号码) h #导入 @界面ViewController:UIViewController { __弱ibuitextfield*text1; __弱ibuitextfield*text2; IBUIAlertView*警报; } @属性(弱

我在执行代码时创建了两个文本字段(用户名和电话号码),只有text1(用户名)被执行。我得到了警报视图,以同样的方式,我试图给出警报视图,即text2(电话号码),它必须允许数字, 但在我的代码中无法执行second if statement-text2(电话号码)

h

#导入
@界面ViewController:UIViewController
{
__弱ibuitextfield*text1;
__弱ibuitextfield*text2;
IBUIAlertView*警报;
}
@属性(弱,非原子)IBOutlet UITextField*text1;
@属性(弱,非原子)IBOutlet UITextField*text2;
@属性(强,非原子)IBUIAlertView*alert;
@结束
M

#导入“ViewController.h”
@界面视图控制器()
@结束
@实现视图控制器
{
UIAlertView*提示;
}
@合成文本1;
@综合预警;
@合成文本2;
-(无效)viewDidLoad
{
[超级视图下载];
text1.delegate=self;
text2.委托=自我;
}
-(BOOL)textField:(UITextField*)textField应更改字符范围:(NSRange)范围替换字符串:(NSString*)字符串
{
如果(textField==text1)
{
NSCharacterSet*myCharSet=[NSCharacterSet characterSetWithCharactersInString:@“0123456789”];
对于(int i=0;i<[字符串长度];i++)
{
unichar c=[string characterAtIndex:i];
如果(![myCharSet成员:c])
{
alert=[[UIAlertView alloc]initWithTitle:@“错误”消息:@“仅允许数字”委托:自取消按钮:@“确定”其他按钮:无,无];
[警报显示];
返回否;
}
}
返回YES;
}
如果(textField==text2)
{
NSLog(“你好”);
NSCharacterSet*myCharSet1=[NSCharacterSet characterSetWithCharactersInString:@“abcdefghijklmnopqrstuvwxyzabefghijklmnopqrstuvwxyz”];
对于(int i=0;i<[字符串长度];i++)
{
unichar c1=[字符串字符索引:i];
如果(![myCharSet1成员:c1])
{
alert=[[UIAlertView alloc]initWithTitle:@“错误”消息:@“不允许编号”委托:自取消按钮:@“确定”其他按钮:无,无];
[警报显示];
返回否;
}
}
}
返回YES;
}
@结束

您尚未为第二个文本字段设置委托。将text2的委托设置为与text1相同,如下所示

- (void)viewDidLoad
{
[super viewDidLoad];
text1.delegate = self;
text2.delegate = self;

}
对于compare
UITextField
,应该使用
isEqual:
而不是
=
运算符。所以应该是这样的

if ([textField isEqual:text1]){
     .......
   Your code here
     .......
 }
if ([textField isEqual:text2]){
     .......
   Your code here
     .......
 }

将phoneTextFeild的键盘类型更改为UIKeyboardTypePhonePad

phoneTextFeild.keyboardType=UIKeyboardTypePhonePad;

您必须将条件if(textField==text2)置于第一个textField之外condition@DhavalBhadania感谢重播,但首先我尝试了这种方式,即使只有第一个if语句被执行,它不会进入第二个if语句text2.delegate=self;丢失放置制动点并检查委托方法是否正在调用,如果调用,则它将进入您的状态检查它…使用您的phoneTextfield键盘类型作为UIKeyboardTypePhonePad
if ([textField isEqual:text1]){
     .......
   Your code here
     .......
 }
if ([textField isEqual:text2]){
     .......
   Your code here
     .......
 }
phoneTextFeild.keyboardType=UIKeyboardTypePhonePad;