当textView
显示或隐藏键盘时,我使用波纹管代码向上或向下移动屏幕,通过这种方式,我可以看到最后一个字段在它聚焦时。< / p>
- (void)textViewDidBeginEditing:(UITextView *)textField
{
[self animateTextView: textField up: YES];
}
- (void)textViewDidEndEditing:(UITextView *)textField
{
[self animateTextView: textField up: NO];
}
- (void) animateTextView: (UITextView*) textField up: (BOOL) up
{
const int movementDistance = 130; // tweak as needed
const float movementDuration = 0.2f; // tweak as needed
int movement = (up ? -movementDistance : movementDistance);
[UIView beginAnimations: @"anim" context: nil];
[UIView setAnimationBeginsFromCurrentState: YES];
[UIView setAnimationDuration: movementDuration];
self.view.frame = CGRectOffset(self.view.frame, 0, movement);
[UIView commitAnimations];
}
但问题是,当屏幕向上移动时,navBar
它也会移动,是否有办法移动除navBar
以外的所有内容或将navBar
保留在其中{&}} #39;使用[self animateTextView: textField up: YES];
后的位置?
答案 0 :(得分:1)
这是因为您在主视图中有自定义NavigationBar。 在故事板中的NavBar下面创建另一个UIView,然后将textField和其他UI对象放在这个新视图中。 保持这一点这是心灵导航栏不应该在键盘出现时向上推动的同一个UIView对象的旁边。 因此,创建一个新创建的UIView对象的出口,而不是移动viewController的主视图,只需模式新建这样的视图。
[UIView animateWithDuration:0.2 animations:^{
//Just Replace Your Animation Code with This and see the difference.
self.containerViewOfOtherObjects.frame = CGRectOffset(self.containerViewOfOtherObjects.frame, 0, movement);
}];