我有一个错误,我已经看了两个多小时但仍然不知道为什么会这样。 我在滚动条视图上有一个注册表单,如果它们的键盘在文本字段中(在编辑完成时调用的功能),它会向下滚动。 这是发生错误的代码段:
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显示590.000用于scrollerOffset.y并且文本字段一直跳到滚动视图的顶部,就像它应该的那样,就像旁边的图像一样它表明了。
但如果我有这样的模拟器并在Phone Nr字段内单击,NSLog再次显示590.000但是scrollview没有跳起来显示文本字段......
编辑:如果我没有为滚动设置动画,它可以很好地工作,只有在动画时才会出错。
答案 0 :(得分:1)
经过一天的思考后,我找到了解决方案,所以如果有人遇到同样的问题,那就是解决方案:
基本上,iOS有一个内置的滚动条,如果文本字段不在屏幕上,它也会滚动(通常文本字段的中心在屏幕外,屏幕外的视线不在视线范围内,如果它是通过键盘隐藏,它仍然被认为是在屏幕上)。所以我打电话给我的功能,滚动,然后iOS做了他的滚动并搞砸了我。所以你需要禁用iOS'内置滚动。