2013-07-04 49 views
1

我有一个错误,我一直在寻找两个多小时,仍然不知道它为什么会发生。 我在滚动视图上有一个注册表单,如果它们的键盘位于文本框的位置(在编辑启动时调用该函数),滚动视图就会向下滚动。 下面的代码段,其中的错误发生了:Xcode - 滚动视图中的内容偏移

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,并且文本字段会一直跳到scrollview的顶部,因为它应该如下图所示它显示。

12

,但如果我有这样的模拟器,然后单击站电话号码栏内的NSLog再次显示590.000,但滚动视图不跳起来显示文本字段...

33

编辑:如果我没有动画滚动,它完美的工作,只有动画时出错。

回答

1

嗯,我已经找到了一种思维一天后的溶液,因此,如果任何人有同样的问题,继承人是解决方案:从这里

解决方案:http://www.pressingquestion.com/1128098/Disable-Uiscrollview-Scrolling-When-Uitextfield-Becomes-First-Responder

基本上,iOS版具有一个内置的滚动条,如果文本字段离开屏幕,它也会滚动显示(通常文本字段的中心离开屏幕,离开屏幕不在屏幕上,如果它被键盘隐藏,它仍然被视为打开屏幕)。所以我打电话给我的功能,做了滚动,然后iOS做了他的滚动,把我搞砸了。所以你需要禁用iOS的内置滚动功能。