需求:带输入框的view显示在界面最下端,当弹出键盘时,view要在键盘的上面,并且随着输入法的不同即时改变高度。
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
//使用NSNotificationCenter 键盘出现时
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillAppear:)
name:UIKeyboardDidShowNotification object:nil];
//使用NSNotificationCenter 键盘隐藏时
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillBeHidden:)
name:UIKeyboardWillHideNotification object:nil];
}
实现方法
-(void)keyboardWillAppear:(NSNotification*)aNotification{
CGSize size = [[[aNotification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue].size;
if (size.height == 216) {
[UIView animateWithDuration:0.1 animations:^(void){
CGRect frame = _bottomView.frame;
frame.origin.y = DeviceHeight - 216 -44;
_bottomView.frame = frame;
}];
}else{
[UIView animateWithDuration:0.1 animations:^(void){
CGRect frame = _bottomView.frame;
frame.origin.y = DeviceHeight - 252 -44;
_bottomView.frame = frame;
}];
}
}
- (void)keyboardWillBeHidden:(NSNotification*)aNotification
{
[UIView animateWithDuration:0.1 animations:^(void){
CGRect frame = _bottomView.frame;
frame.origin.y = DeviceHeight -44;
_bottomView.frame = frame;
}];
}
其中
DeviceHeight 为设备高度的宏定义,用于 3.5、4寸屏幕的适配。
最后要在dealloc方法中移除通知
-(void)dealloc{
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];
}