<span style="background-color: rgb(255, 255, 255);"><span style="font-family:Arial, Helvetica, sans-serif;"> </span><strong><span style="font-family:Microsoft YaHei;font-size:18px;">iPhone的键盘唤醒容易 想要回收却有点小问题 Xcode并没有固定的函数或是固定的机制对键盘进行回收 想要做到键盘的回收还需要自己一点一点的敲代码。</span></strong></span>
下面几项键盘回收的方法是大家比较常用的,1~3项都是日常中大家经常使用的方法 就是通过触发事件来完成对键盘的回收 但是在我们日常使用手机的习惯中 我们更倾向于点击除textField 之外的地方来回收键盘 这就用到了第4种方法 点击空白处进行键盘的回收
1. [self.view endEditing:YES];
<UITextFieldDelegate>
3.2在需要的textField写代理
textField.delegate = self;
3.3 重写监控程序
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(keyBoard)];
//触摸屏幕的手指数
tap.numberOfTapsRequired = 1;
// 触摸次数
tap.numberOfTouchesRequired = 1;
[self.window addGestureRecognizer:tap];
- (void) keyBoard
{
[self.window endEditing:YES];
}
相信大家都用过微信 微信的UITextField都是放在屏幕的下方 当触碰输入框的时候 会自动弹出键盘 并且UITextField会随着键盘而移动在屏幕上方的位置(这里我们先忽略屏幕上面聊天记录也随着上升的现象) 以下两种方法分别是我解决这一问题的方法
#pragma mark 方法一
_pasIn = [[UITextField alloc] initWithFrame:CGRectMake(140, 600, 150, 40)];
_pasIn.placeholder = @"请输入密码";
[_pasIn addTarget:self action:@selector(textFieldShouldBeginEditing:) forControlEvents:UIControlEventEditingDidBegin];
1.2在.h文件中添加<UITextFieldDelegate> 代理
1.3重写textField自带方法
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
// 动画输出
[UIView animateWithDuration:0.25 animations:^{
// 不能直接对textField.frame进行修改
CGRect fram = textField.frame;
// 键盘高度为216
fram.origin.y = 600 - 216;
textField.frame = fram;
}];
return YES;
}
我们都知道 Xcode给我们提供的键盘种类很多 如果按照第一种方法来进行设计 代码会非常的多。如果加入第三方的键盘 那就更是数不胜数了,所以我建议大家使用第二种方法,动态获取键盘的高度
#pragma mark 方法二
[NSNotificationCenter keyBoardView] addObserver:self selector:@selector(keyboard:) name:UIKeyboardWillShowNotification object:nil];
2.2进行方法实现
-(void)keyboard:(NSNotification *)note
{
// 大家可以打印一下 note 它返回的是键盘的fram center bounds等信息
NSDictionary *info = [note userInfo];
CGSize keyboardSize = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size;
// 这里在获取键盘的高度之后 对UITextField的位置进行修改
CGFloat changeY = (460 - keyboardSize.height) - nameField.frame.size.height;
nameField.frame = CGRectMake(35, changeY, 250, 35);
}