[英]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
,尽管我想尝试IQKeyboardManager
: http : IQKeyboardManager
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.