UITextField中处理键盘是一件很麻烦的事情,我的第一个项目中让我费了好大劲。虽然网上的例子很多。细节问题!!!最后高手胡哥一语惊醒梦中人,帮我解决了问题。非常感谢胡哥在我的第一个项目上的帮助。
首先设置代理 在h文件中要继承 UIViewController<UITextFieldDelegate>
然后要定义一个全局变量 CGRect fieldRect;
//本方法为当键盘弹出时,若将文本框遮盖,uiview将会上移。
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
fieldRect = self.view.frame; //本句将是本文章的靓点,此句的意思是 将当前页面的frame赋值给全局变量 fieldRect,方便键盘消失后恢复frame。
CGRect rect = textField.frame;
int offset = rect.origin.y +32 - (self.view.frame.size.height -216.0);//键盘高度216
NSTimeInterval animationDuration = 0.30f;
[UIViewbeginAnimations:@"ResizeForKeyBoard"context:nil];
[UIViewsetAnimationDuration:animationDuration];
float width = self.view.frame.size.width;
float height = self.view.frame.size.height +32;
if(offset > 0)
{
CGRect rect = CGRectMake(0.0f, -offset,width,height);
self.view.frame = rect;
}
[UIViewcommitAnimations];
}
//本方法为当键盘弹出,输入完文本内容后,触摸键盘以外的背景,键盘将会消失。使用本方法需要在增加一个button ,button大小和整个屏幕大小相同。button链接方法为-(IBAction)backgroundTap:(id)sender;
-(IBAction)backgroundTap:(id)sender
{
[phoneNumberresignFirstResponder];
[passwordresignFirstResponder];
[yanzhengmaresignFirstResponder];
self.view.frame =fieldRect;
}
//此方法为当点击键盘上的return键时,键盘将会消失。
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
NSTimeInterval animationDuration = 0.30f;
[UIViewbeginAnimations:@"ResizeForKeyboard"context:nil];
[UIViewsetAnimationDuration:animationDuration];
self.view.frame =fieldRect;
[UIViewcommitAnimations];
[textField resignFirstResponder];
return YES;
}