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',尽管我尝试了,但没有成功:(