在文本字段之间切换时避免滚动

时间:2010-07-18 02:34:20

标签: iphone keyboard scroll

我有一个包含六个UITextField的视图的视图控制器。每当用户选择文本字段时,我都需要向上滚动。因此,文本字段都将视图控制器设置为各自的委托。当委托方法触发时,它会调用scroll方法向上滚动(如果键盘出现)或向下滚动(如果它正在消失)。滚动方法如下所示:

- (void) scroll: (CGFloat) distanceUp {
    [UIView beginAnimations:@"Scroll" context:NULL];
      //move some stuff up by distanceUp, or down if distanceUp is negative.
    [UIView commitAnimations];
}

如果用户选择了一个文本字段,输入一个值,然后点击键盘上的DONE按钮,这样就可以了。

当用户直接从一个文本字段切换到另一个文本字段时,问题就出现了。在这种情况下,会发生的情况是视图向下跳跃,然后向上滚动。显然我更希望它保持不变。我该怎么做呢?

1 个答案:

答案 0 :(得分:1)

根据评论者tonclon的建议,我所做的是使用UIKeyboard通知而不是文本字段代表。在viewDidLoad中,我有以下内容:

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow) name:UIKeyboardWillShowNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide) name:UIKeyboardWillHideNotification object:nil];

keyboardWillShow / hide方法调用向上/向下滚动。

我在viewDidUnload和dealloc中取消注册。 [而且我不确定这两种取消注册是否都是必要的。]