繁体   English   中英

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

[英]Move UITextField/View up when keyboard appears, but only if TextFiel is hidden

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

我已经找到一种解决方法,可以在键盘出现后立即将整个View向上移动。 但这意味着最顶层的TextField被隐藏了。

我已经花了几个小时来找到可行的解决方案,但是没有成功。

请问有人可以帮助我吗?

编辑

我决定尝试IQKeyboardManager库。

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

我在didFinishLaunchingWithOptions中添加了这一行代码( IQKeyboardManager.sharedManager().enable = true ),然后将整个IQKeyboardManagerSwift文件夹移动(拖放)到Xcode的左侧栏中。

但是我得到了: Use of unresolved identifier 'IQKeyboardManager'

我究竟做错了什么?

对于所有这些UITextField + Keyboard问题,我强烈建议您使用IQKeyboardManager库。 无需一行代码即可解决该问题。

如果您想自己做事,应该看看这个答案

试试这个->

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获取键盘高度。 如果您对此方法感兴趣,请发表评论,然后我将编辑添加一些代码以完成整个操作

您可以使用UITableViewController并免费获取所需的行为。 只需将文本字段放在单元格中,它将自动滚动文本字段,因此键盘不会将其隐藏。

这对我IQKeyboardManager ,尽管我想尝试IQKeyboardManagerhttp : IQKeyboardManager

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM