您的位置:首页 > 其它

点击键盘,控件上移的方式

2016-01-12 16:13 239 查看

点击键盘,被挡住的控件的上移,回收键盘,控件回到原处,要实现这个功能,共有两种方法

一:(通知中心,监听键盘的弹起和回收)

1.监听键盘的弹起

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyBoardWillAppear:) name:UIKeyboardWillShowNotification object:nil];


2.监听弹起的时候的触发方法,用UIView的动画效果实现

// 键盘弹起的时候触发方法
- (void)keyBoardWillAppear:(NSNotification *)notification{
NSLog(@"键盘弹起了");
// 找到键盘的尺寸
CGRect rect = [[[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
#warning 整体打印结构体的方法
NSLog(@"%@", NSStringFromCGRect(rect));
#warning 用动画效果让改变view的frame
// 用UIView的动画,让视图随键盘向上平移
[UIView animateWithDuration:0.2 animations:^{
self.myView.frame = CGRectMake(100, 600 - rect.size.height, 200, 50);
}];
}


3.监听键盘的回收

// 监听键盘的回收
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyBoardWillHidden:) name:UIKeyboardWillHideNotification object:nil];


4.键盘回收的时候实现的方法

(1)点击空白回收键盘

// 点击空白处回收键盘
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
[super touchesBegan:touches withEvent:event];
[self.textField resignFirstResponder];
}


(2)控件回到原处(view的动画效果, 可以再点击空白处回收键盘里实现,注意时间需要改成0.2)

// 让view回到原来的位置
- (void)keyBoardWillHidden:(NSNotification *)notification{
// 也可以在touch里写(在touch的方法里写,时间需要注意)
[UIView animateWithDuration:2 animations:^{
self.myView.frame = CGRectMake(100, 600, 200, 50);
}];

}


二:textField的协议方法

// 监控当前的状态
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
NSLog(@"编辑开始");

CGFloat height = textField.center.y - HEIGHT / 2;
if (height > 0) {
self.view.center = CGPointMake(self.view.center.x, HEIGHT / 2 - height);
}
return YES;
}

// 结束编辑
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField{
CGFloat heigth = textField.center.y - HEIGHT / 2;
if (heigth > 0) {
self.view.center = CGPointMake(self.view.center.x, self.view.center.y + heigth);
}
return YES;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: