Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
键盘不';即使是辞职的FirstResponder也不能隐藏在iOS中_Ios_Iphone_Ios7_Uikeyboard - Fatal编程技术网

键盘不';即使是辞职的FirstResponder也不能隐藏在iOS中

键盘不';即使是辞职的FirstResponder也不能隐藏在iOS中,ios,iphone,ios7,uikeyboard,Ios,Iphone,Ios7,Uikeyboard,我有一个带有用户名、密码文本字段和提交按钮的登录页面。 如果焦点是密码文本字段,并且用户在不按键盘上的返回键的情况下按下提交按钮。 键盘被解除,因为我使用resignFirstResponder解除键盘,但当我点击服务器时,警报来自无效凭据,然后在显示警报的纳秒内,键盘也会出现。 使用下面的代码行在单击登录按钮时关闭键盘 [self.passwdTxtFld setDelegate:self]; [self.usernameTxtFld setDelegate:self]; [self.view

我有一个带有用户名、密码文本字段和提交按钮的登录页面。 如果焦点是密码文本字段,并且用户在不按键盘上的返回键的情况下按下提交按钮。 键盘被解除,因为我使用resignFirstResponder解除键盘,但当我点击服务器时,警报来自无效凭据,然后在显示警报的纳秒内,键盘也会出现。 使用下面的代码行在单击登录按钮时关闭键盘

[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;
}