代理
-(void)textFieldDidBeginEditing:(UITextField *)textField
{
CGRect frame=textField.frame;
int offset =frame.origin.y+32-(self.view.frame.size.height-216.0);
NSTimeInterval animationDuration=0.30f;
[UIView beginAnimations:@"ResizeForKeyboard" context:nil];
[UIView setAnimationDuration:animationDuration];
if (offset>0) {
self.view.frame=CGRectMake(0.0f, -offset, self.view.frame.size.width, self.view.frame.size.height);
[UIView commitAnimations];
}
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField{
[textField resignFirstResponder];
return YES;
}
-(void)textFieldDidEndEditing:(UITextField *)textField
{
self.view.frame=CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
[self.view endEditing:YES];
}
通知
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center addObserver:self selector:@selector(keyboardAppear:) name:UIKeyboardWillShowNotification object:nil];
[center addObserver:self selector:@selector(keyboardDisappear:) name:UIKeyboardWillHideNotification object:nil];
-(void)keyboardAppear:(NSNotification*)notification{
NSDictionary*info = notification.userInfo;
CGRect keyboardFrame = [info[UIKeyboardFrameEndUserInfoKey] CGRectValue];
CGRect frame = self.inputView3.frame;
frame.origin.y = keyboardFrame.origin.y - self.inputView3.bounds.size.height;
UIViewAnimationOptions optiones = [info[UIKeyboardAnimationCurveUserInfoKey] unsignedIntegerValue];
NSTimeInterval duration = [info[UIKeyboardAnimationDurationUserInfoKey] doubleValue];
[UIView animateWithDuration:duration
delay:0.0
options:optiones
animations:^{
self.inputView3.frame = frame;
}
completion:nil];
}
-(void)keyboardDisappear:(NSNotification*)notification{
NSDictionary*info = notification.userInfo;
CGRect frame = self.inputView3.frame;
frame.origin.y = self.view.bounds.size.height;
UIViewAnimationOptions optiones = [info[UIKeyboardAnimationCurveUserInfoKey] unsignedIntegerValue];
NSTimeInterval duration = [info[UIKeyboardAnimationDurationUserInfoKey] doubleValue];
[UIView animateWithDuration:duration
delay:0.0
options:optiones
animations:^{
self.inputView3.frame = frame;
}
completion:nil];
}