Ios 当键盘出现时,向上移动UITextField/视图,但仅当TextFiel隐藏时

Ios 当键盘出现时,向上移动UITextField/视图,但仅当TextFiel隐藏时,ios,swift,keyboard,uitextfield,Ios,Swift,Keyboard,Uitextfield,我用Xcode和Swift制作了一个iOS应用程序。 在一个ViewController中,有一个具有多个UITextFields的窗体。 我的问题是,当键盘打开时,底部附近的文本字段隐藏在键盘后面 我已经找到了一种解决方法,可以在键盘出现时将整个视图向上移动。但这意味着,最上面的文本字段被隐藏 我已经花了好几个小时来寻找一个有效的解决方案,但没有成功 有人能帮我吗 编辑 我决定试试键盘管理器库 因为我不使用椰子荚,所以我尝试了手动方式 我在AppDelegate的didFinishLaunch

我用Xcode和Swift制作了一个iOS应用程序。 在一个ViewController中,有一个具有多个UITextFields的窗体。 我的问题是,当键盘打开时,底部附近的文本字段隐藏在键盘后面

我已经找到了一种解决方法,可以在键盘出现时将整个视图向上移动。但这意味着,最上面的文本字段被隐藏

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

有人能帮我吗

编辑

我决定试试键盘管理器库

因为我不使用椰子荚,所以我尝试了手动方式

我在AppDelegate的didFinishLaunchingWithOptions中添加了这行代码IQKeyboardManager.sharedManager.enable=true,并将整个IQKeyboardManagerSwift文件夹拖放到Xcode的左侧栏中

但我得到了:使用未解析标识符“IQKeyboardManager”

我做错了什么?

对于所有这些UITextField+键盘问题,我强烈建议您使用library。它不需要一行代码就可以处理这个问题

如果你想自己做事情,你应该看看这些UITextField+键盘问题,我强烈建议你使用library。它不需要一行代码就可以处理这个问题

如果你想自己做事情,你应该看看这个->

func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
if textField == nameTxtField {
    self.view.frame = CGRectMake(0, -50, self.view.frame.size.width, self.view.frame.size.height)
}
if textField == EmailTxtField {
    self.view.frame = CGRectMake(0, -100, self.view.frame.size.width, self.view.frame.size.height)
}
    return true
}
试试这个->

func textFieldShouldBeginEditing(textField: UITextField) -> Bool {
if textField == nameTxtField {
    self.view.frame = CGRectMake(0, -50, self.view.frame.size.width, self.view.frame.size.height)
}
if textField == EmailTxtField {
    self.view.frame = CGRectMake(0, -100, self.view.frame.size.width, self.view.frame.size.height)
}
    return true
}

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

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

不幸的是,由于我的声誉,我无法发表评论,因此我在这里发表评论。 让我理解一下,只有当你要编辑一个UITextField时,你才想把视图向上移动,当点击被键盘覆盖时,对吗

如果答案是肯定的,当键盘将要显示时,用以下命令检查谁是第一响应者

if bottomTextField.isFirstResponder() {
    view.frame.origin.y = getKeyboardHeight() * -1
}
由于您知道键盘将覆盖哪些文本字段,因此仅当其中一个字段正在编辑时,才可以向上滑动视图。 您可以从UIKeyboardWillShowNotification获取键盘高度。
如果您对这种方法感兴趣,请发表评论,我将编辑添加一些代码来完成整个过程

不幸的是,由于我的声誉,我无法发表评论,因此我在这里发表评论。 让我理解一下,只有当你要编辑一个UITextField时,你才想把视图向上移动,当点击被键盘覆盖时,对吗

如果答案是肯定的,当键盘将要显示时,用以下命令检查谁是第一响应者

if bottomTextField.isFirstResponder() {
    view.frame.origin.y = getKeyboardHeight() * -1
}
由于您知道键盘将覆盖哪些文本字段,因此仅当其中一个字段正在编辑时,才可以向上滑动视图。 您可以从UIKeyboardWillShowNotification获取键盘高度。
如果您对这种方法感兴趣,请发表评论,我将编辑添加一些代码来完成整个过程

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

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

这对我很有效,不过我想试试IQKeyboardManager:

这对我很有效,尽管我想尝试IQKeyboardManager:

我使用了这个,并且工作正常。我使用了这个,并且工作正常。我需要CocoaPod来创建这个库吗?你可以使用CoCoCoaPod来集成这个库,这是最简单的方法。但是你也可以手动集成它,就像我在尝试手动版本中解释的那样。我在AppDelegate的didFinishLaunchingWithOptions中添加了这行代码IQKeyboardManager.sharedManager.enable=true,并将整个IQKeyboardManagerSwift文件夹拖放到Xcode的左侧栏中。但我得到了:使用未解析标识符“IQKeyboardManager”。我做错了什么?伟大的发现!这个库需要CocoaPod吗?你可以用CocoaPod集成这个库,这是最简单的方法。但是你也可以手动集成它,就像我在尝试手动版本中解释的那样。我在AppDelegate的didFinishLaunchingWithOptions中添加了这行代码IQKeyboardManager.sharedManager.enable=true,并将整个IQKeyboardManagerSwift文件夹拖放到Xcode的左侧栏中。但我得到了:使用未解析标识符“IQKeyboardManager”。我做错了什么?伟大的发现!做
nt工作良好-它似乎会干扰其他POP,如添加UI更改的POP,如自动完成字段DOESNT工作良好-它似乎会干扰其他POP,如添加UI更改的POP,如自动完成字段