我有一个UITabBarController
,有四个相关的观点。在其中一个视图中有一个文本视图,仅为navigationbar
留出空间:我想要做的是在触摸navigationbar
时隐藏键盘。我怎样才能做到这一点?我应该覆盖touchesBegan:
的{{1}}方法吗?
修改
我发现这样做的最好方法是添加UINavigationBar
UITapGestureRecognizer
调用方法
UITapGestureRecognizer* tapRecon = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(navigationBarTap:)];
tapRecon.numberOfTapsRequired = 1;
[self.navigationController.navigationBar addGestureRecognizer:tapRecon];
答案 0 :(得分:2)
UITapGestureRecognizer* tapRecon = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(navigationBarTap:)];
tapRecon.numberOfTapsRequired = 1;
[self.navigationController.navigationBar addGestureRecognizer:tapRecon];
- (void)navigationBarTap:(UIGestureRecognizer*)recognizer {
[self.view endEditing:YES];
// OR
for (id view in self.view.subviews) {
if ([view isKindOfClass:[UITextView class]] || [view isKindOfClass:[UITextField class]]) {
[view resignFirstResponder];
}
}
}
愿这对你有帮助
答案 1 :(得分:0)
在你的touchesBegan方法中,你可以使用resignFirstResponder来使键盘消失。希望这会有所帮助,为吉姆欢呼。
答案 2 :(得分:0)
未经测试。 将敲击手势添加到UINavigationbar并添加动作以手势以响应响应者。
UITapGestureRecognizer *gestureRecognizer=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(hideKeyboard)];
gestureRecognizer.numberOfTapsRequired=1;
gestureRecognizer.cancelsTouchesInView = NO;
[UInavigationbar addGestureRecognizer:gestureRecognizer];
[gestureRecognizer release];
动作:
[Textfield resignfirstresponder]
答案 3 :(得分:0)
//此方法将在导航到其他视图之前调用...
-(void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:YES];
[yourTextField resignFirstResponder];
}
//这将在导航到其他屏幕之前重新签名键盘..
我希望这会对你有所帮助。
答案 4 :(得分:0)
您可以使用此快捷扩展名在外部单击时关闭键盘。可能会在导航栏或视图控制器视图上单击该用户。
只需在UIViewController中调用一次 hideKeyboardWhenTappedAround()
<MainStructure>
<View style={{flex:1}}>
<Header>.....</Header>
<AppContainer />
<Footer>.....</Footer>
</View>
</MainStructure>;
}