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

Tom*_*lbu 1 keyboard uitextfield ipad dismiss uimodalpresentationstyle

对于我的iPad应用程序,当按下按钮时,我有一个以模态显示的视图作为表单.为了让键盘在文本字段中输入文本后被解雇,我按照建议进行了尝试;

"disablesAutomaticKeyboardDismissal"方法.

这不起作用,实际上,该方法永远不会根据日志调用.键盘将解除iPhone或我选择不提供模态.

这是我的代码:

- (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];
}
Run Code Online (Sandbox Code Playgroud)

- (BOOL)disablesAutomaticKeyboardDismissal 与否,键盘不会被解除,除非我删除tis行:

    // [navController setModalPresentationStyle:UIModalPresentationFormSheet];
Run Code Online (Sandbox Code Playgroud)

然而,它不再以我想要的方式呈现.

谁能看到我做错了什么?

Tor*_*sen 7

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

@interface AutomaticKeyboardDismissingNavigationController : UINavigationController
@end

@implementation AutomaticKeyboardDismissingNavigationController
- (BOOL)disablesAutomaticKeyboardDismissal
{
    return NO;
}
@end
Run Code Online (Sandbox Code Playgroud)

(班级名称可能会更短,但仍然可以理解.)