添加观察员在viewWillAppear中
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasShown:) name:UIKeyboardDidShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillBeHidden:) name:UIKeyboardDidHideNotification object:nil];
在viewWillDisappear
删除观察
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil];
现在,在您的视图控制器添加此方法
#pragma mark - keyboard Hide Show
-(void) keyboardWasShown:(NSNotification *)notification
{
//Manages scrollview content on keyboard hide show
NSDictionary *info = [notification userInfo];
NSValue *kbFrame = [info objectForKey:UIKeyboardFrameEndUserInfoKey];
CGRect keyboardFrame = [kbFrame CGRectValue];
CGFloat height = keyboardFrame.size.height;
[_scrollView setContentInset:UIEdgeInsetsMake(0, 0, height, 0)];
[_scrollView setScrollIndicatorInsets:UIEdgeInsetsMake(0, 0, height, 0)];
}
- (void) keyboardWillBeHidden:(NSNotification *)notification
{
//Manages scrollview content on keyboard hide show
UIEdgeInsets contentInsets = UIEdgeInsetsZero;
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.3f];
[_scrollView setContentInset:UIEdgeInsetsMake(0, 0, 0, 0)];
[_scrollView setScrollIndicatorInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
[UIView commitAnimations];
}
#pragma mark - Textfield Delegate Methods -
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
CGRect r = [textField convertRect:textField.frame toView:_scrollView];
[self.scrollView scrollRectToVisible:r animated:YES];
}
快速的解决办法是记住了'contentOffset.y'在另一个全局变量并在'textFieldShouldReturn'委托中将'tblemailconfiguration'设置为保存的contentOffset。 –
提供我的代码? –
好吧,我已经添加了一个答案。 –