第四章:第三节 关于键盘
step—1:键盘的监听
1.一般在viewWillAppear:方法中添加监听事件
- (void)viewWillAppear:(BOOL)animated{
[superviewWillAppear:animated];
//增加监听,当键盘出现或改变时收出消息
[[NSNotificationCenterdefaultCenter] addObserver:selfselector:@selector(keyboardWillShow:)name:UIKeyboardWillShowNotificationobject:nil];
//增加监听,当键退出时收出消息
[[NSNotificationCenterdefaultCenter] addObserver:selfselector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotificationobject:nil];
}
//当键盘弹出时调用
- (void)keyboardWillShow:(NSNotification*)notification{
//获取键盘的高度
NSDictionary*userInfo = [notification userInfo];
NSValue*value = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey];
CGRectkeyboardRect = [value CGRectValue];
CGFloatheight = keyboardRect.size.height;
//第一种 self.view 平移的属性
//self.view.transform=CGAffineTransformMakeTranslation(0,-height);
//第二种 self.view frame的属性
CGRectframe = self.view.frame;
frame.origin.y= -height;
self.view.frame= frame;
NSLog(@"键盘打开...%@",NSStringFromCGRect(self.view.frame));
}
//当退出退出时调用
- (void)keyboardWillHide:(NSNotification*)notification{
//获取键盘的高度
NSDictionary*userInfo = [notification userInfo];
NSValue*value = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey];
CGRectkeyboardRect = [value CGRectValue];
CGFloatheight = keyboardRect.size.height;
//第一种 self.view 平移的属性
//self.view.transform=CGAffineTransformIdentity;
//self.view.transform=CGAffineTransformMakeTranslation(0,0);
//第二种 self.view frame的属性
CGRectframe = self.view.frame;
frame.origin.y= 0;
self.view.frame= frame;
NSLog(@"键盘关闭...%@",NSStringFromCGRect(self.view.frame));
}
2.一般在viewWillDisappear:或dealloc 方法中移除
- (void)viewWillDisappear:(BOOL)animated{
[superviewWillDisappear:animated];
//解除键盘出现通知
[[NSNotificationCenterdefaultCenter] removeObserver:selfname:UIKeyboardDidShowNotificationobject:nil];
//解除键盘隐藏通知
[[NSNotificationCenterdefaultCenter] removeObserver:selfname:UIKeyboardDidHideNotificationobject:nil];
}
- (void)dealloc{
//解除键盘出现通知
[[NSNotificationCenterdefaultCenter] removeObserver:selfname:UIKeyboardDidShowNotificationobject:nil];
//解除键盘隐藏通知
[[NSNotificationCenterdefaultCenter] removeObserver:selfname:UIKeyboardDidHideNotificationobject:nil];
}