这是正在发生的事情的一些屏幕截图。
绿色背景是滚动视图中的一个视图(即标记“内容大小”和“内容偏移量”)。
橙色是滚动视图框架。
键盘启动了……滚动视图很好地滚动了内容。
现在我单击文本字段,键盘开始隐藏
尽管滚动视图(橙色)似乎是正确的高度,但内容现在已经跳跃了大约 100 像素(绿色)。
我不知道是什么原因造成的 - 无论是 ios 错误还是什么(它也发生在我的设备上)。
这是根据键盘何时显示/隐藏来调整视图大小的代码。
- (void)keyboardWillShow:(NSNotification *)notif {
[self.mainScrollView setAutoresizesSubviews:NO];
// get the scroll view frame size
CGRect frame = [self.mainScrollView frame];
frame.size.height = self.view.frame.size.height-216;
[UIView beginAnimations:@"scrollViewAnimations" context:nil];
[UIView setAnimationDuration:0.3];
[self.mainScrollView setFrame:frame];
[UIView commitAnimations];
// add tap gesture recognizer
_tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(_dismissKeyboard:)];
[_tap setDelegate:self];
[self.view addGestureRecognizer:_tap];
}
- (void)keyboardWillHide:(NSNotification *)notif {
CGRect frame = [self.mainScrollView frame];
frame.size.height = self.view.frame.size.height;
[UIView beginAnimations:@"scrollViewAnimations" context:nil];
[UIView setAnimationDuration:0.3];
[self.mainScrollView setFrame:frame];
[UIView commitAnimations];
[self.view removeGestureRecognizer:_tap];
}
任何帮助或指导都会很棒,谢谢!为什么要这样做?它是一个错误 - 它是埋在我的代码中的某个地方吗?如果是的话,我找不到。这是我制作视图动画的方式的错误吗?