【问题标题】:Move UITextField above keyboard when using UIScrollView使用 UIScrollView 时将 UITextField 移动到键盘上方
【发布时间】:2016-06-08 20:26:09
【问题描述】:

我有一个UIScrollView,其中包含一个UIView 容器,其中包含多个UITextFields。

我想要执行以下操作:如果我选择了一个字段并且它位于键盘下方,则将文本字段提升到键盘上方 20 点。如果它在键盘上方,则不要执行任何操作。

真正的问题是,当键盘处于活动状态时,最后一个字段根本不可见,因为我到达了 UIView 的末尾(在我的情况下它是 836 点高)。

我认为我可以将整个视图提升到键盘的高度,但这并不意味着当前字段将正好在键盘上方 20 点。

有什么想法吗?

编辑:这不是一个重复的问题。我已经有一个UIScrollView,如果在完成编辑前一个字段后按键盘上的“下一步”时,如果该字段位于键盘下方,我希望活动文本字段在键盘上方正好 20 点。

【问题讨论】:

  • 更改滚动视图的contentInset 以便整个滚动视图可以在键盘上方的区域内滚动。
  • 另外,您可以使用setContentOffset(_:, animated:) 来实现键盘上方的20 点边距。使用键盘通知UIKeyboardWillShowNotificationUIKeyboardWillHideNotification) 来获取键盘出现时的大小。
  • @paulvs 我以前没有使用过这些,所以一些代码会很有帮助。

标签: ios swift uiscrollview keyboard


【解决方案1】:

查看 KeyboardWillShow 和 KeyboardWillHide 通知。

实现后,可以从通知对象参数中获取键盘高度。

从那里,您的 UIView 框架可以调整所需的量,以便 UITextFields 比键盘高 20 点。

希望这会有所帮助。

【讨论】:

  • 我明白这一点,以及@matt 所说的,但这只是修复了最后一个字段不可见的问题。问题是相对于键盘上方 20 点的活动字段移动整个视图。我无法手动移动视图 X 点。它必须适应。
  • 谢谢!我从你说的开始找到了一个苹果教程,它解决了我的问题。
  • @Lawrence413 没问题,伙计!
【解决方案2】:

尝试使用TPKeyboardAvoiding 库。你只需要设置滚动视图的类。它会处理所有事情。

希望对您有所帮助。

【讨论】:

    【解决方案3】:

    像这样在viewWillAppear 中添加UIKeyboardWillShowNotification 的观察者 -

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

    然后在keyboardWillShow: 方法中,按以下方式将滚动视图滚动到 UITextField 的框架 -

    - (void) keyboardWillShow:(UIView *)aView {
    [scrollview scrollRectToVisible:textView.frame animated:YES];
    }
    

    如果你的 textField 已经在屏幕上,这不会做任何事情。如果 textField 在键盘下方,这会自动将 scrollView 移动到 textView 的框架。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-16
      • 2012-01-25
      • 1970-01-01
      • 1970-01-01
      • 2012-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多