键盘出现时移动UITextField / View,但仅在隐藏TextFiel时移动

时间:2016-08-23 14:40:50

标签: ios swift keyboard uitextfield

我用Xcode和Swift制作了一个iOS应用程序。 在一个ViewController中,有一个包含多个UITextField的表单。 我的问题是,当打开它时,底部附近的TextFields隐藏在键盘后面。

我已经找到了一种解决方法,只要键盘出现就会立即移动整个View。但这意味着,最顶层的TextFields会被隐藏。

我已经花了好几个小时找到一个有效的解决方案,但没有成功。

有人可以帮助我吗?

修改

我决定尝试IQKeyboardManager.sharedManager().enable = true库。

由于我不使用CocoaPods,我尝试了“手动”方式。

我在AppDelegate的didFinishLaunchingWithOptions中添加了这行代码(IQKeyboardManagerSwift),我在Xcode的左侧栏中移动(拖放)了整个Use of unresolved identifier 'IQKeyboardManager'文件夹。

但我得到了:{{1}}。

我做错了什么?

6 个答案:

答案 0 :(得分:2)

对于所有这些UITextField +键盘问题,我强烈建议您使用IQKeyboardManager库。它将在没有一行代码的情况下处理问题。

如果你想自己做事,你应该看看this answer

答案 1 :(得分:0)

试试这个 - >

import os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

答案 2 :(得分:0)

您应该考虑将文本字段放在滚动视图中,当键盘出现时,只需按键盘高度调整滚动视图的高度即可。这将使整个滚动视图保持在屏幕上,并允许您滚动文本字段。

答案 3 :(得分:0)

不幸的是,由于我的声誉,我无法发表评论,所以我在这里发表评论。 让我明白,只有当你要编辑一个UITextField时,你想要移动视图,当键盘覆盖时,对吧?

如果答案是肯定的,当键盘显示时,检查谁是第一个响应者,如

if bottomTextField.isFirstResponder() {
    view.frame.origin.y = getKeyboardHeight() * -1
}

由于您知道哪些文本字段将被键盘覆盖,因此只有在编辑其中一个文本字段时才可以向上滑动视图。 您可以从UIKeyboardWillShowNotification获取键盘高度。 如果您对此方法感兴趣,请注释,我将编辑添加一些代码来完成整个事情

答案 4 :(得分:0)

您可以使用UITableViewController并免费获得所需的行为。 只需在单元格中放置一个文本字段,它就会自动滚动文本字段,以便键盘不会隐藏它。

答案 5 :(得分:-3)