我正在尝试使用此代码
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
NSLog(@"%f",self.view.frame.origin.y);
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.25f];
CGRect frame = self.view.frame;
frame.origin.y =frame.origin.y -204;
[self.view setFrame:frame];
[UIView commitAnimations];
}
- (void)textFieldDidEndEditing:(UITextField *)textField
{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.25f];
CGRect frame = self.view.frame;
frame.origin.y = frame.origin.y + 204;
[self.view setFrame:frame];
[UIView commitAnimations];
}
成为这个:
无法弄清楚为什么以及是否必须对导航栏或约束做些什么。
答案 0 :(得分:0)
为什么不使用这个名为IQKeyboardManager的漂亮图书馆。只需通过pods /手动添加它,让它完成你的工作
答案 1 :(得分:0)
阿列克谢索博列夫斯基所说的那种伎俩。基本上我需要将它们放在scrollview中并从滚动视图添加约束到下面的对象,然后将包含textfields的所有视图放在该scrollview中。这使一切正常。
答案 2 :(得分:0)
首先添加滚动视图。 然后编写以下代码。
//When return key press then bring the view back
-(BOOL)textFieldShouldReturn:(UITextField *)textField{
[textField resignFirstResponder];
self.scrlView.contentOffset = CGPointMake(0, 0);
return YES;
}
//When the text field begin editing then moves the view up
-(void)textFieldDidBeginEditing:(UITextField *)textField{
self.scrlView.contentOffset = CGPointMake(0, 30);
}
//When ext field end editing then bring the view back
-(void)textFieldDidEndEditing:(UITextField *)textField{
self.scrlView.contentOffset = CGPointMake(0, 0);
}