iOS表单键盘不会消失

iOS表单键盘不会消失,ios,objective-c,uinavigationcontroller,uitextview,Ios,Objective C,Uinavigationcontroller,Uitextview,我知道我必须打电话 - (BOOL)disablesAutomaticKeyboardDismissal { return NO; } //this dismiss keyboard on ios - (BOOL) textViewShouldBeginEditing:(UITextView *)textView { [self.comments resignFirstResponder]; return YES; } 为了消除表单上的键盘,我还知道,如果我有导航控制器

我知道我必须打电话

- (BOOL)disablesAutomaticKeyboardDismissal {
    return NO;
}
//this dismiss keyboard on ios
- (BOOL) textViewShouldBeginEditing:(UITextView *)textView {
    [self.comments resignFirstResponder];
    return YES;
}
为了消除表单上的键盘,我还知道,如果我有导航控制器,我必须在导航控制器中调用
disablesAutomatickeyboarddisassal

问题是:我使用导航控制器以编程方式创建表单,如下所示:

UIStoryboard*  sb = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:[NSBundle mainBundle]];
SettingsViewController *settingsVC = [sb instantiateViewControllerWithIdentifier:@"settingsViewController"];
//add navigation controller 
UINavigationController *modalViewNavController= [[UINavigationController alloc] initWithRootViewController:settingsVC];
modalViewNavController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
modalViewNavController.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentModalViewController:modalViewNavController animated:YES];
所以我并没有表单表单的导航控制器类,在这种情况下我怎么能取消键盘呢

我必须创建导航视图控制器吗

更新:更新:更新:更新:

最后在故事板中创建一个导航控制器,并在导航控制器的视图控制器中调用
disablesAutoMatcheyBoardDismissal
,这解决了问题,但我仍然想知道如何在不创建导航控制器类的情况下实现这一点


欢迎任何输入……

您可以尝试以下代码

- (void)viewDidLoad {
    [super viewDidLoad];

    UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyboard)];
    gestureRecognizer.cancelsTouchesInView = NO;
    [self.view addGestureRecognizer:gestureRecognizer];
}

- (void)hideKeyboard {
    [self.view endEditing:YES];
}

以下代码适用于我:

@interface UINavigationController (dismissKeyBoard)

@end

@implementation UINavigationController (dismissKeyBoard)

- (BOOL)disablesAutomaticKeyboardDismissal
{
    return NO;
}

@end

请告诉我您是如何在视图控制器中实现disablesAutomaticKeyboardDismissal的?@user2176995如果您的表单表根是导航控制器,您必须将
-(BOOL)disablesAutomaticKeyboardDismissal{返回否;}
导航控制器的.m
文件中,否则只需将代码放在
视图控制器.m
文件中。如果我创建了uiNavigationController的子类,将方法添加到其中,然后在故事板中将导航控制器的子类设置为自定义导航控制器类,是否有效?在实现了这个方法之后,我用真实的第一反应者隐藏了键盘,对吗?没错。您需要在表单表单控制器中调用'resignFirstResponder',尽管我尝试了,但没有成功:(