我用Xcode和Swift制作了一个iOS应用程序。 在一个ViewController中,有一个包含多个UITextField的表单。 我的问题是,当打开它时,底部附近的TextFields隐藏在键盘后面。
我已经找到了一种解决方法,只要键盘出现就会立即移动整个View。但这意味着,最顶层的TextFields会被隐藏。
我已经花了好几个小时找到一个有效的解决方案,但没有成功。
有人可以帮助我吗?
修改
我决定尝试IQKeyboardManager.sharedManager().enable = true
库。
由于我不使用CocoaPods,我尝试了“手动”方式。
我在AppDelegate的didFinishLaunchingWithOptions
中添加了这行代码(IQKeyboardManagerSwift
),我在Xcode的左侧栏中移动(拖放)了整个Use of unresolved identifier 'IQKeyboardManager'
文件夹。
但我得到了:{{1}}。
我做错了什么?
答案 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)
这对我有用,但我想尝试IQKeyboardManager
:http://glaucocustodio.com/2015/09/26/content-locked-under-keyboard-another-approach-to-solve/