문제

I have the following code and my keyboard is not dismissing when the Done button is pressed on the iPad.

- (BOOL)textFieldShouldReturn:(UITextField *)textField{

    if (textField.tag == 13) //Username Field
    {
        UITableViewCell *cCredentials = [self.tvList cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:CredentialsSection]];
        [((UITextField*)[cCredentials viewWithTag:14]) becomeFirstResponder];
    }
    else if (textField.tag == 14) //Password Field
    {
        if (![[[NSUserDefaults standardUserDefaults] stringForKey:@"NTAuthentication"] isEqualToString: @"N"])
        {
            //Domain Field
            UITableViewCell *cCredentials = [self.tvList cellForRowAtIndexPath:[NSIndexPath indexPathForRow:1 inSection:CredentialsSection]];
            [((UITextField*)[cCredentials viewWithTag:15]) becomeFirstResponder];
        }
        else
        {
            [textField resignFirstResponder];
        }
    }
    else
    {
        [textField resignFirstResponder];
    }

    return YES;
}

The header file delegates:

@interface vcSignature_iPad : UIViewController <DropdownDelegate,
                                                UITextFieldDelegate,
                                                UITextViewDelegate,
                                                UITableViewDataSource,
                                                UITableViewDelegate>

This is where I create the fields in the table for the cellForRowAtIndexPath method:

UITableViewCell *cellCredentials = [tableView dequeueReusableCellWithIdentifier:@"cellCredentials"];

    if (cellCredentials == nil)
    {
        cellCredentials = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cellCredentials"];
        cellCredentials.selectionStyle = UITableViewCellSelectionStyleNone;
        cellCredentials.backgroundColor = [UIColor clearColor];

        UITextField *txt = [[UITextField alloc]init];
        txt.borderStyle = UITextBorderStyleRoundedRect;
        txt.font = [UIFont systemFontOfSize:14.0];
        txt.textAlignment = NSTextAlignmentLeft;
        txt.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
        txt.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
        txt.delegate = self;
        txt.text = nil;

        if (indexPath.row == 0)
        {
            txt.placeholder = @"User Id";
            txt.tag = 13;
            txt.returnKeyType = UIReturnKeyNext;
            txt.frame = CGRectMake(20.0, 10.0, 240.0, 31.0);
            txt.text = stored.User;
            [cellCredentials.contentView addSubview:txt];


            txt = [[UITextField alloc]init];
            txt.borderStyle = UITextBorderStyleRoundedRect;
            txt.font = [UIFont systemFontOfSize:14.0];
            txt.textAlignment = NSTextAlignmentLeft;
            txt.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
            txt.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
            txt.delegate = self;
            txt.text = stored.Password;

            txt.placeholder = @"Password";
            txt.secureTextEntry = YES;
            txt.tag = 14;
            txt.frame = CGRectMake(279.0, 10.0, 240.0, 31.0);
            if ([[[NSUserDefaults standardUserDefaults] stringForKey:@"NTAuthentication"] isEqualToString: @"N"])
            {
                txt.returnKeyType = UIReturnKeyDone;
            }
            else
            {
                txt.returnKeyType = UIReturnKeyNext;
            }
            [cellCredentials.contentView addSubview:txt];
        }
        else
        {
            txt.placeholder = @"Domain";
            txt.tag = 15;
            txt.returnKeyType = UIReturnKeyDone;
            txt.frame = CGRectMake(20.0, 10.0, 240.0, 31.0);
            txt.text = stored.Domain;
            [cellCredentials.contentView addSubview:txt];
        }
도움이 되었습니까?

해결책

The problem is that you are in a UIModalPresentationFormSheet modal view controller's view. By default, the keyboard does not disappear when a text field on this kind of modal view resigns first responder. The keyboard vanishes only when the modal view itself is dismissed (or you can change the behavior, by overriding disablesAutomaticKeyboardDismissal to return NO).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top