标签:ios objective-c
-(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; }
标签:ios objective-c
原文地址:http://blog.csdn.net/liyakun1990/article/details/40296235