-(void)viewWillAppear:(BOOL)animated
{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:self.view.window];
[super viewWillAppear:animated];
}
-(void)viewWillDisappear:(BOOL)animated
{
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil];
[super viewWillDisappear:animated];
}
-(void)keyboardWillShow:(NSNotification *)notif
{
NSDictionary*info=[notif userInfo];
NSValue* aValue= [info objectForKey:UIKeyboardBoundsUserInfoKey];
CGSize keyboardSize=[aValue CGRectValue].size;
float bottomPoint= (text1.frame.origin.y+text1.frame.size.height+5);
//float bottomPoint= (text2.frame.origin.y+text2.frame.size.height+5);
//float bottomPoint= (text3.frame.origin.y+text3.frame.size.height+5);
scrollAmount=keyboardSize.height - (self.view.frame.size.height - bottomPoint);
if(scrollAmount > 0)
{
moveViewUp = YES;
[self scrollTheView:YES];
}
else
moveViewUp = NO;
}
}
-(void)scrollTheView:(BOOL) movedUp
{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];
CGRect rect = self.view.frame;
if(movedUp)
{
rect.origin.y -= scrollAmount;
}
else
{
rect.orig开发者_运维问答in.y += scrollAmount;
}
self.view.frame = rect;
[UIView commitAnimations];
}
-(BOOL)text1ShouldReturn:(UITextField *)theTextField
{
[theTextField resignFirstResponder];
if(moveViewUp)
[self scrollTheView:NO];
return YES;
}
I have written this code to scroll the view but it is not returning when the keyboard disappears.
You have not subscribed to the UIKeyboardWillHideNotifcation, only Show - thus it will not do anything when the keyboard hides.
精彩评论