ios - 即使在 resignFirstResponder 上,键盘也不会隐藏在 iOS 中

标签 ios iphone ios7 uikeyboard

我有一个带有用户名、密码文本字段和提交按钮的登录页面。 如果焦点在密码文本字段上并且用户按下提交按钮而没有按下键盘上的返回键。 键盘被关闭,因为我使用 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 也已连接。 you can see in the image that both UIAlertView and Keyboard are opened.

最佳答案

错误:-

根据您的代码,您只是在一个“else if”条件下放弃键盘:-

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 条件呢,如果您在 (void)checkLogin 方法。

关于ios - 即使在 resignFirstResponder 上,键盘也不会隐藏在 iOS 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29927677/

相关文章:

iphone - 在 iOS 上设置 <select> 输入的第一个选项的样式

iphone - 如何检查 iPhone 5 是否运行 iOS 7?

ios - 如何在 SpriteKit 上创建 UITextField

uiscrollview - 使 UIGestureRecognizer 响应已经在进行中并被另一个识别器识别的手势

ios - 使用 Xamarin 的 CALayer 自定义属性动画

ios - SceneKit 自定义几何

ios - 在 viewDidLoad 处将可调整大小的 UIImage 设置为 UIImageView 被忽略

ios - 使用 [NSData dataWithBytesNoCopy : . .. freeWhenDone :NO] with a const byte array as input? 是否安全

ios - 如何停止自动旋转?

iphone - 有时 Facebook 分享对话框无法在 iOS 上加载