【问题标题】:Avoiding scrolling when switching among text fields在文本字段之间切换时避免滚动
【发布时间】:2010-07-18 22:58:48
【问题描述】:

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

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

如果用户选择一个文本字段,输入一个值,然后点击键盘上的 DONE 按钮,则可以正常工作。

当用户直接从一个文本字段直接切换到另一个时,就会出现问题。在这种情况下,发生的情况是视图向下跳转,然后向上滚动。显然,我更希望它保持原样。我如何让它做到这一点?

【问题讨论】:

  • 这似乎只是模拟器的问题(我以前遇到过),你在设备上测试过吗?
  • 您是否考虑过使用 scrollView 作为 parentView 来处理所有需要滚动的内容?您可以使用 UIKeyboard-Notificatins 而不是 textFields 委托来确定何时需要滚动。

标签: iphone keyboard scroll


【解决方案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 中都取消了注册。 [而且我不确定这两种注销是否都是必要的。]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    相关资源
    最近更新 更多