键盘不';即使是辞职的FirstResponder也不能隐藏在iOS中
我有一个带有用户名、密码文本字段和提交按钮的登录页面。 如果焦点是密码文本字段,并且用户在不按键盘上的返回键的情况下按下提交按钮。 键盘被解除,因为我使用resignFirstResponder解除键盘,但当我点击服务器时,警报来自无效凭据,然后在显示警报的纳秒内,键盘也会出现。 使用下面的代码行在单击登录按钮时关闭键盘键盘不';即使是辞职的FirstResponder也不能隐藏在iOS中,ios,iphone,ios7,uikeyboard,Ios,Iphone,Ios7,Uikeyboard,我有一个带有用户名、密码文本字段和提交按钮的登录页面。 如果焦点是密码文本字段,并且用户在不按键盘上的返回键的情况下按下提交按钮。 键盘被解除,因为我使用resignFirstResponder解除键盘,但当我点击服务器时,警报来自无效凭据,然后在显示警报的纳秒内,键盘也会出现。 使用下面的代码行在单击登录按钮时关闭键盘 [self.passwdTxtFld setDelegate:self]; [self.usernameTxtFld setDelegate:self]; [self.view
[self.passwdTxtFld setDelegate:self];
[self.usernameTxtFld setDelegate:self];
[self.view endEditing:YES];
下面是我从服务器获取响应的代码,并显示警报
- (void)checkLogin
{
NSLog(@"???%@",self.usernameTxtFld.text);
NSDictionary *checkLogin=[pwInteract initializeWithOrgId:@"JVVC" AppId:@"JVVC" LoginId:self.usernameTxtFld.text Password:self.passwdTxtFld.text];
NSLog(@"checklogin is %@",checkLogin);
if(checkLogin)
{
if(![[checkLogin objectForKey:@"NOTIFICATION"]isEqualToString:@"Y"] && ![[checkLogin objectForKey:@"NOTIFICATION"]isEqualToString:@"NV"]){
[loggingInAlert dismissWithClickedButtonIndex:loggingInAlert.cancelButtonIndex animated:YES];
[loggingInAlert removeFromSuperview];
NSLog(@"?? response is %@",checkLogin);
NSString *result = [checkLogin objectForKey:@"IS_AUTH"];
NSString *error = [checkLogin objectForKey:@"ERROR"];
if ([result isEqualToString:@"Y"] )
{
if([self.usernameTxtFld.text isEqualToString:[[NSUserDefaults standardUserDefaults] objectForKey:@"username"]]){
[[NSUserDefaults standardUserDefaults] setObject:@"olduser" forKey:@"usertype"];
}
else{
[[NSUserDefaults standardUserDefaults] setObject:@"newuser" forKey:@"usertype"];
}
[[NSUserDefaults standardUserDefaults]setObject:@"" forKey:@"fetch"];
[[NSUserDefaults standardUserDefaults]setObject:@"" forKey:@"state"];
[[NSUserDefaults standardUserDefaults]setObject:@"success" forKey:@"state"];
[[NSUserDefaults standardUserDefaults]setObject:self.usernameTxtFld.text forKey:@"username"];
[self performSegueWithIdentifier:@"success" sender:nil];
}
else if (![error isEqualToString:@""])
{
UIAlertView *networkAlertView = [[UIAlertView alloc] initWithTitle:@"Error" message:error delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];
networkAlertView.tag = 1;
[networkAlertView show];
[self.view endEditing:YES];
if([self.passwdTxtFld isFirstResponder]){
NSLog(@"pass");
}
if([self.usernameTxtFld isFirstResponder]){
NSLog(@"ddd");
}
}
else if ([result isEqualToString:@""])
{
NSString *error = [checkLogin objectForKey:@"ERROR"];
UIAlertView *networkAlertView = [[UIAlertView alloc] initWithTitle:@"Error" message:error delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];
networkAlertView.tag = 3;
[networkAlertView show];
}
else
{
UIAlertView *networkAlertView = [[UIAlertView alloc] initWithTitle:@"" message:@"Oops! Either Username or Password is incorrect. Please type correct Username and Password to proceed." delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];
networkAlertView.tag = 3;
[networkAlertView show];
}
}
else if([[checkLogin objectForKey:@"NOTIFICATION"]isEqualToString:@"NV"]){
[customAlert hideActivityIndicator];
}
}
else
{
UIAlertView *networkAlertView = [[UIAlertView alloc] initWithTitle:@"Server Error" message:@"No Response From Server." delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];
networkAlertView.tag = 3;
[networkAlertView show];
}
}
登录按钮的单击事件已退出用户名和密码文本字段,并且UITextFieldDelegate已连接。
点击“登录”按钮或在显示警报之前,请尝试[self.view endEditing:YES]。错误:- 根据您的代码,您只是在一种“如果”情况下重新调整键盘:- 如果出现其他情况,如果您在
(void)checkLogin
方法的第一条语句中退出键盘[self.view endEditing:YES]
,问题将得到解决
- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[[self view] endEditing:YES];
}
或尝试
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
return YES;
}
// It is important for you to hide the keyboard
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
同时检查
UITextFieldDelegate
delegate方法,而不是图片显示您的代码;)view.endEditing(true)似乎是一个错误,您的文本字段正在引导焦点,从而触发键盘显示。出现警报或单击登录按钮时,请尝试[self.view endediting:yes]。[self.passwdTxtFld resignFirstResponder];[self.usernameTxtFld辞职FirstResponder]@ArunGupta也尝试过这样做,显示了您调用以关闭键盘的代码行。没有代码我们就帮不了你。
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
return YES;
}
// It is important for you to hide the keyboard
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}