iOS隐藏键盘总结

弹出键盘
[textField becomeFirstResponder];

隐藏键盘
resignFirstResponderendEditing

方式一.点击Return的时候隐藏键盘(需设置TextField的delegate)

1
2
3
4
5
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];//需指定文本框的代理 textField.delegate = self;
return YES;
}

方式二.点击view其他区域隐藏键盘

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
//1.直接交出CSTextField的第一响应者的身份
[CSTextField resignFirstResponder];


//2.遍历所有子视图 查找UITextField控件并通知文本失去第一响应者状态
for (UIView *subVie in self.view.subviews) {
if ([subVie isKindOfClass:[UITextField class]]) {
[subVie resignFirstResponder];
}
}

//3.view结束编辑
[self.view endEditing:YES];


//4.keyWindow 结束编辑
[[[UIApplication sharedApplication] keyWindow] endEditing:YES];

//5.发送resignFirstResponder.
[[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil];

//6.设置textField的Tag
[[self.view viewWithTag:10001] resignFirstResponder];
}
1
2
3
4
5
// Scroll 滑动隐藏
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
[self.view endEditing:YES];
}

关于UITextView隐藏键盘

思路基本和UITextField一样

1.方法一

1
2
3
4
5
6
7
//1.(结束编辑)
[self.view endEditing:YES];
OR
[self.text endEditing:YES];

//2.(注销第一响应)
[self.text resignFirstResponder];

 
2.方法二 (Return键隐藏)

1
2
3
4
5
6
7
8
9
10
11
/**
* 需设置textView的delegate
*/
-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
if ([text isEqualToString:@"\n"]) {
[textView resignFirstResponder];
return NO;
}
return YES;
}

关于 UITableView如何隐藏键盘方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
- (void)viewDidLoad
{
...
UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyboard:)];

gestureRecognizer.cancelsTouchesInView = NO;
[self.tableView addGestureRecognizer:gestureRecognizer];
}

- (void)hideKeyboard:(UIGestureRecognizer *)gestureRecognizer
{
CGPoint point = [gestureRecognizer locationInView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:point];

// Let say you are editing first section first row
if (indexPath != nil && indexPath.section == 0 && indexPath.row == 0) {
return;
}
[self.firstRowTextField resignFirstResponder];
}

StackflowDismiss keyboard by touching background of UITableView

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
- (BOOL)findAndResignFirstResonder:(UIView *)stView {
if (stView.isFirstResponder) {
[stView resignFirstResponder];
return YES;
}
for (UIView *subView in stView.subviews) {
if ([self findAndResignFirstResonder:subView]) {
return YES;
}
}
return NO;
}

- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
...
[self findAndResignFirstResonder: self.view];
...
}

文章作者: kyren
文章链接: http://huluo666.github.io/2016/04/11/iOS 收键盘/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Kyren's Blog