Iphone 通过单击键盘上的“发送”按钮保存数据并转到上一个视图
我有一个注册页面,在注册中输入详细信息后,我想单击键盘上的发送按钮(代替返回键)。它应该保存注册页面中的所有数据,并将我带到上一个登录页面 对于用户名和电子邮件文本字段,我使用了下一步按钮,以便在我处理完每个文本字段后切换选项卡。它工作得很好 因此,当我单击电子邮件文本字段键盘上的“下一步”按钮时,它会将我带到密码文本字段,一旦我输入完密码,键盘上的“发送”按钮就会显示出来。但当我尝试单击它时,不会执行任何操作 因此,如果我点击发送按钮,它应该保存我在注册页面中输入的所有数据,并将我带到上一个登录页面。就像一个普通的提交按钮一样,我希望键盘上的发送按钮执行操作,而不是其他普通按钮 这是我在注册页面中发送和下一个键盘按钮的代码Iphone 通过单击键盘上的“发送”按钮保存数据并转到上一个视图,iphone,ios5,Iphone,Ios5,我有一个注册页面,在注册中输入详细信息后,我想单击键盘上的发送按钮(代替返回键)。它应该保存注册页面中的所有数据,并将我带到上一个登录页面 对于用户名和电子邮件文本字段,我使用了下一步按钮,以便在我处理完每个文本字段后切换选项卡。它工作得很好 因此,当我单击电子邮件文本字段键盘上的“下一步”按钮时,它会将我带到密码文本字段,一旦我输入完密码,键盘上的“发送”按钮就会显示出来。但当我尝试单击它时,不会执行任何操作 因此,如果我点击发送按钮,它应该保存我在注册页面中输入的所有数据,并将我带到上一个登
-(IBAction)send
{
NSUserDefaults *stringDefault = [NSUserDefaults standardUserDefaults];
[stringDefault setValue:@"" forKey:@"stringKey"];
[stringDefault setValue:name.text forKey:@"Username"];
[stringDefault setValue:email.text forKey:@"EmailID"];
[stringDefault setValue:password.text forKey:@"password"];
[stringDefault synchronize];
NSLog(@"%@",name.text);
// NSLog(@"%@",email.text);`
// NSLog(@"%@",password.text);
NSString *emailRegEx = @"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegEx];
//Valid email address
if ([emailTest evaluateWithObject:email.text] == NO)
{
UIAlertView *Alt = [[UIAlertView alloc] initWithTitle:@"Incorrect" message:@"Enter a valid email id" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
[Alt show];
[Alt release];
NSLog(@"email not in proper format");
}
NSString *passwordd = @"[A-Za-z]{8,12}";
NSPredicate *passtest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", passwordd];
//Valid email address
if ([passtest evaluateWithObject:password.text] == NO)
{
UIAlertView *Alt = [[UIAlertView alloc] initWithTitle:@"Incorrect" message:@"Enter a valid password" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
[Alt show];
[Alt release];
// NSLog(@"email not in proper format");
}
login *l=[[login alloc]initWithNibName:@"login" bundle:nil];
[self presentModalViewController:l animated:YES];
}
-(IBAction)next:(UITextField *)ras{
if (ras == name) {
[ras resignFirstResponder];
[email becomeFirstResponder];
}
else if (ras == email) {
[ras resignFirstResponder];
[password becomeFirstResponder];
}
else if (ras == password) {
[ras resignFirstResponder];
}
//return YES;
}
有解决方案吗?将属性UIReturnType发送到UIExtField的UIReturnTypeSend并设置委托
[usernameTextField setReturnType:UIReturnTypeSend];
[usernameTextField setDelegate:self];
[passwordTextField setReturnType:UIReturnTypeSend];
[passwordTextField setDelegate:self];
然后使用然后textFieldDelegateMethod ShouldReturn
-(BOOL)validationSuccess{
NSString *emailRegEx = @"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegEx];
//Valid email address
if ([emailTest evaluateWithObject:email.text] == NO)
{
UIAlertView *Alt = [[UIAlertView alloc] initWithTitle:@"Incorrect" message:@"Enter a valid email id" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
[Alt show];
[Alt release];
NSLog(@"email not in proper format");
return NO;
}
NSString *passwordd = @"[A-Za-z]{8,12}";
NSPredicate *passtest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", passwordd];
//Valid email address
if ([passtest evaluateWithObject:password.text] == NO)
{
UIAlertView *Alt = [[UIAlertView alloc] initWithTitle:@"Incorrect" message:@"Enter a valid password" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
[Alt show];
[Alt release];
// NSLog(@"email not in proper format");
return NO;
}
return YES;
}
-(BOOL)textFieldShouldReturn:(UITextField *)textField{
if([self validationSuccess])
{
//Save your data here
[self saveData];
//If you have pushed from loginviewcontroller then you can go back directly
[[self navigationController] popToRootViewControllerAnimated:YES];
//Or if you have presented from loginviewcontroller
[self dismissViewControllerAnimated:YES completion:NULL];
}
return YES;
}
-(void)saveData{
NSUserDefaults *stringDefault = [NSUserDefaults standardUserDefaults];
[stringDefault setValue:@"" forKey:@"stringKey"];
[stringDefault setValue:name.text forKey:@"Username"];
[stringDefault setValue:email.text forKey:@"EmailID"];
[stringDefault setValue:password.text forKey:@"password"];
[stringDefault synchronize];
}
您想只存储一个用户数据还是多个用户数据…?注册期间一次只存储一个用户。但如果多个用户在我的应用程序中注册,他们将拥有各自的帐户。对于单个用户,您可以使用NSuserDefoult进行管理,但如果您为多用户创建帐户,则必须使用Sqlitedatabase@NitinGohel:你能再帮我解决一个关于重新安排照片的问题吗?@Nitinghel:你能把你的邮件id发给我吗?我的是阿吉特。wl07@gmail.comHi,你能告诉我你建议的前4行代码应该写在哪里吗?在viewdidload中“将属性UIReturnType发送到UIReturnTypeSend of UITextField并设置委托”,或者您可以通过接口生成器更改属性。因此,如果我在接口生成器中更改了返回类型键,我不需要正确编写这些代码?代码是正确的。但是如何对发送按钮进行操作呢?当我点击发送时,即使使用您的代码,它也不起作用。您不需要为发送按钮操作创建另一个操作。您可以将您的发送按钮代码写入textFieldShouldReturn中,正如我所提到的(当您点击发送按钮时,textFieldShouldReturn方法将调用)