使用modalPresentationStyle时如何在iPad上关闭键盘

How to dismiss the keyboard on iPad when using modalPresentationStyle

对于我的iPad应用程序,当按下按钮时,我会以表格形式显示视图。 为了使键盘在文本字段中输入文本后关闭,我尝试按照建议进行操作;

" disablesAutomaticKeyboardDismissal"方法。

这是行不通的,实际上,从未根据日志调用该方法。
当iPhone或我选择不以模态形式出现时,键盘将关闭。

这是我的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
- (BOOL)disablesAutomaticKeyboardDismissal
{  
    NSLog(@"method calls");
    return NO;
}

- (IBAction)showNewView:(id)sender
{

    MyViewController *mvc =
            [[MyViewController alloc] init];

// some lines about setting content
//...

    UINavigationController *navController = [[UINavigationController alloc]
                                initWithRootViewController:mvc];

    [navController setModalPresentationStyle:UIModalPresentationFormSheet];
    [self presentViewController:navController animated:YES completion:nil];
}

-(BOOL)禁用自动键盘关闭
否,除非我删除此行,否则键盘不会关闭:

1
    // [navController setModalPresentationStyle:UIModalPresentationFormSheet];

但是,它不再以我想要的方式呈现。

谁能看到我在做什么错?


-(BOOL)disablesAutomaticKeyboardDismissal需要重写,以便由以表单形式显示的视图控制器(而不是由演示者)返回NO; 那是你的错 在您的情况下,您可以将UINavigationController子类化以获得所需的行为:

1
2
3
4
5
6
7
8
9
@interface AutomaticKeyboardDismissingNavigationController : UINavigationController
@end

@implementation AutomaticKeyboardDismissingNavigationController
- (BOOL)disablesAutomaticKeyboardDismissal
{
    return NO;
}
@end

(类名可能会短一些,但仍然可以理解。)