-(void) viewWillAppear:(BOOL)animated {
//注册键盘出现通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector (keyboardDidshow:)
name: UIKeyboardDidShowNotification object:nil];
//注册键盘隐藏通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector (keyboardDidHide:)
name: UIKeyboardDidHideNotification object:nil];
[super viewWillAppear:animated];
}
-(void) viewWillDisappear:(BOOL)animated {
//解除键盘出现通知
[[NSNotificationCenter defaultCenter] removeObserver:self
name: UIKeyboardDidShowNotification object:nil];
//解除键盘隐藏通知
[[NSNotificationCenter defaultCenter] removeObserver:self
name: UIKeyboardDidHideNotification object:nil];
[super viewWillDisappear:animated];
}
-(void) keyboardDidshow: (NSNotification *)notif {
if (keyboardVisible) {
return; // 键盘出现时,忽略通知
}
// 获得键盘尺寸
NSDictionary *info = [notif userInfo];
NSValue *aValue = [info objectForKey:UIKeyboardFrameEndUserInfoKey];
CGSize keyboardSize = [aValue CGRectValue].size;
// 重新定义SrollView的尺寸
CGRect viewFrame = [self.scrollView frame];
viewFrame.size.height -= keyboardSize.height;
self.scrollView.frame = viewFrame;
// 滚动到当前文本框
// frame方法可以当前控件的结构体数据
CGRect textFieldRect = [self.textField frame];
// 指定滚动到一个矩形区域
[self.scrollView scrollRectToVisible:textFieldRect animated:YES];
keyboardVisible = YES;
}
- (void) keyboardDidHide: (NSNotification *)notif{
// 获得键盘尺寸
NSDictionary *info = [notif userInfo];
NSValue *aValue = [info objectForKey:UIKeyboardFrameEndUserInfoKey];
CGSize keyboardSize = [aValue CGRectValue].size;
// 重新定义SrollView的尺寸
CGRect viewFrame = [self.scrollView frame];
viewFrame.size.height += keyboardSize.height;
self.scrollView.frame = viewFrame;
if (!keyboardVisible) {
return;
}
keyboardVisible = NO;
}
-(BOOL) textFieldShouldReturn:(UITextField *)textField
{
// 当按下return时,键盘消失
[textField resignFirstResponder];
return YES;
}
键盘滚动到当前文本框和按return隐藏
最新推荐文章于 2021-02-19 21:59:51 发布