我有一个错误,我已经查看了两个多小时,但仍然不知道为什么会发生。我在滚动视图上有一个注册表单,如果键盘挡住了文本字段(在 Editing Did Start 处调用的函数),它会向下滚动。这是发生错误的代码段:
CGPoint scrollerOffset = scroller.contentOffset;
UITextField *currentTextField = sender;
CGPoint textFieldOrigin = currentTextField.frame.origin;
if (scrollerOffset.y < textFieldOrigin.y) {
scrollerOffset.y = textFieldOrigin.y - currentTextField.frame.size.height;
NSLog(@"Offset: %f",scrollerOffset.y);
[scroller setContentOffset:scrollerOffset animated:YES];
}
现在这里是乐趣的开始。
如果我有这样的模拟器并在 Phone Nr 字段内单击,NSLog 显示 scrollerOffset.y 的 590.000 并且文本字段一直跳到滚动视图的顶部,正如它应该显示的那样,就像它旁边的图像所示。
但是,如果我有这样的模拟器并在 Phone Nr 字段内单击,则 NSLog 再次显示 590.000 但滚动视图不会跳起来显示文本字段...
编辑:如果我不为滚动设置动画,它会完美运行,只有在动画时才会出错。