键盘退出
遇到的问题是如果我设置了其中任一项参数之后没有关闭键盘,然后直接点击左上角的“back”,就会出现home view先填充满整个view,然后又被navigation的navigationbar挤下来了。为了解决掉这个问题,要么在切换之前把键盘关掉,也得实现点击空白处就能关闭键盘。那么下面就是代码
- 切换前关闭键盘
要切换view,那么原来的view肯定会先调用方法viewWillDisappear,那我们就在调用该方法的时候把键盘关掉,那么切换过去的时候键盘就已经处于关闭状态了。重新实现viewWillDisappear如下:
?
1
2
3
4
5
6 -(void)viewWillDisappear:(BOOL)animated{
[self IsValidToPop];
[super viewWillAppear:animated];
[self.view endEditing:YES];
}
其中IsValidToPop是在切换的时候判断当前设置完的参数的有效性,并保存参数到NSUserDefault中
2. 点击空白处关闭键盘
在ViewDidLoad方法中添加如下代码,就可以实现了
?
1
2
3 UITapGestureRecognizer *tapGr = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(viewTapped:)];
tapGr.cancelsTouchesInView = NO;
[self.view addGestureRecognizer:tapGr];
viewTapped是自己定义的方法
?
1
2
3
4
5
6
7 -(void)viewTapped:(UITapGestureRecognizer*)tapGr
{
[ipText resignFirstResponder];
[portText resignFirstResponder];
[bufferText resignFirstResponder];
[self IsValidToPop];
}
主要功能就是让当前view里面所有的text窗口都交出第一响应的权限。然后校验参数并保存。
2012-11-06 21:56 10495人阅读 评论(1) 收藏 举报
分类: IOS_TextField(2)
方法一:
//1, 关闭键盘
[[[UIApplication sharedApplication] keyWindow] endEditing:YES];
想必大家都遇到过一个view上好多输入框,为了关闭弹出的软键盘要遍历然后调用resignFirstResponder的吧?今天竟然发现一个关键这个view上可能 打开的键盘很简单:[self.view endEditing:YES];
直接ok了。
方法二:
//2, 关闭键盘
[[self findFirstResponderBeneathView:self] resignFirstResponder];
[[self findFirstResponderBeneathView:self] becomeFirstResponder];//打开键盘
- (UIView*)findFirstResponderBeneathView:(UIView*)view
{
// Search recursively for first responder
for ( UIView *childView in view.subviews ) {
if ( [childView respondsToSelector:@selector(isFirstResponder)] && [childView isFirstResponder] )
return childView;
UIView *result = [self findFirstResponderBeneathView:childView];
if ( result )
return result;
}
return nil;
}