当textView, textField输入内容,被键盘挡住时,需要向上移动整个屏幕View,而不是单单的textView或textField,
移动距离就是键盘挡住textView的长度
// .h中签订协议
.h<UITextViewDeledate, UITextFieldDeledate>
// .m 写 textView, label 属性
@property (strong,nonatomic)UITextView *nameField;
@property (nonatomic,strong)UILabel *label;
// 初始化textView基本信息
- (void)viewDidLoad {
[superviewDidLoad];
_nameField = [[UITextViewalloc]initWithFrame:CGRectMake(0,0, self.view.frame.size.width,self.view.frame.size.height)];
_nameField.layer.borderWidth =1;
_nameField.layer.cornerRadius =5.0;
_nameField.layer.borderColor = [[UIColorredColor]CGColor];
[self.viewaddSubview:_nameField];
_nameField.delegate =self;
// textView水印"个人需求",点击输入时label隐藏
self.label = [[UILabelalloc]initWithFrame:CGRectMake(0,0,100,20)];
self.label.text =@"个人需求";
self.label.tintColor = [UIColorlightGrayColor];
[_nameField addSubview:self.label];
//使用NSNotificationCenter 鍵盤出現時
[[NSNotificationCenter defaultCenter]addObserver:self
selector:@selector(keyboardWasShown:)
name:UIKeyboardDidShowNotification object:nil];
//使用NSNotificationCenter鍵盤隐藏時
[[NSNotificationCenter defaultCenter]addObserver:self
selector:@selector(keyboardWillBeHidden:)
name:UIKeyboardWillHideNotification object:nil];
}
- (void)textViewDidBeginEditing:(UITextView *)textView
{
self.label.hidden =YES;
}
//实现当键盘出现的时候计算键盘的高度大小。用于输入框显示位置
- (void)keyboardWasShown:(NSNotification*)aNotification
{
NSDictionary* info = [aNotificationuserInfo];
//kbSize即為鍵盤尺寸 (有width, height)
CGSize kbSize = [[info objectForKey:UIKeyboardFrameEndUserInfoKey]CGRectValue].size;//得到鍵盤的高度
NSLog(@"hight_hitht:%f",kbSize.height);
CGRect curFrame =self.view.frame;
[UIView animateWithDuration:0.3f animations:^{
self.view.frame =CGRectMake(curFrame.origin.x, curFrame.origin.y +self.view.frame.size.height -808, curFrame.size.width, curFrame.size.height);
}];
// 808 = 键盘.h + textView.y + textView.h
}
// 回车键盘收回
-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
if ([textisEqualToString:@"\n"]) {
[textViewresignFirstResponder];
returnNO;
}
return YES;
}
//当键盘隐藏的时候
- (void)keyboardWillBeHidden:(NSNotification*)aNotification
{
//do something
[UIView animateWithDuration:0.3f animations:^{
self.view.frame =CGRectMake(0,0,self.view.frame.size.width,self.view.frame.size.height);
}];
}