您的位置:首页 > 产品设计 > UI/UE

UITextField 被键盘挡住时自动上移调整textField frame

2015-12-02 11:36 465 查看
#pragma mark - textFieldDelegate 被键盘挡住时能自动调整textField frame, 回收键盘时frame能还原

-(BOOL)textFieldShouldReturn:(UITextField *)textField

//如果工程里还用的其他回收键盘的方法 如UIApplication ShareApplication或者touchBegan 则也需要把此textShouldReturn方法写在那些方法的点击事件里

{

// When the user presses return, take focus away from the text field so that the keyboard is dismissed.

NSTimeInterval animationDuration = 0.30f;

[UIView beginAnimations:@"ResizeForKeyboard" context:nil];

[UIView setAnimationDuration:animationDuration];

CGRect rect = CGRectMake(0.0f, 0.0f, [[UIScreen mainScreen]bounds].size.width, [[UIScreen mainScreen]bounds].size.height);

//CGRect rect = CGRectMake(0.0f, 20.0f, self.view.frame.size.width, self.view.frame.size.height);

self.view.frame = rect;

[UIView commitAnimations];

[textField resignFirstResponder];

return YES;

}

- (void)textFieldDidBeginEditing:(UITextField *)textField

{

CGRect frame = self.textfield.frame; //要放整体上移的view,如果想让textField父view也跟着上移,即textfield所在的view, 就需要写整体上移其父视图 的frame

int offset = frame.origin.y + 35 + 64 - ([[UIScreen mainScreen]bounds].size.height - 216.0);//216是键盘高度, (35 + 64 = textfield高度 + naviBar高度)

NSTimeInterval animationDuration = 0.30f;

[UIView beginAnimations:@"ResizeForKeyBoard" context:nil];

[UIView setAnimationDuration:animationDuration];

float width = self.view.frame.size.width;

float height = self.view.frame.size.height;

if(offset > 0)

{

CGRect rect = CGRectMake(0.0f, -offset,width,height);

self.view.frame = rect;

}

[UIView commitAnimations];

}

#pragma mark
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: