键盘与Swift 4中的UITextField重叠

我正在尝试处理滚动的UITextField,以避免键盘重叠。 点击这里查看目前的输出我越来越 ] StoryBoard截图 。 我试着滚动视图,当我点击最后一个文本字段..密码字段。 当我点击密码字段,只有电子邮件字段,即第二个滚动。 第一个和最后一个字段没有滚动。 我怎样才能解决这个问题?

`

// // ViewController.swift import UIKit class ViewController: UIViewController,UITextFieldDelegate { @IBOutlet weak var scrollView: UIScrollView! @IBOutlet weak var name: UITextField! @IBOutlet weak var email: UITextField! @IBOutlet weak var password: UITextField! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } func textFieldDidBeginEditing(_ textField: UITextField) { // Begin switch textField.tag { case 0...1: print("DO NOTHING") default: print("Do Scroll") scrollView.setContentOffset(CGPoint(x:0,y:100) , animated: true) } } func textFieldDidEndEditing(_ textField: UITextField) { // End scrollView.setContentOffset(CGPoint(x: 0, y: 0), animated: true) } func textFieldShouldReturn(_ textField: UITextField) -> Bool { // Return if textField.tag == 0 { email.becomeFirstResponder() } else if textField.tag == 1 { password.becomeFirstResponder() } else if textField.tag == 2 { textField.resignFirstResponder() } return true } } 

`

除非你真的想自己处理逻辑,否则我build议你试一试IQKeyboardManager !

这是一个简单的CocoaPod库,你可以在你的appDelegate中导入和启用,就这么简单。

这是一个无代码的库,所以您不必再考虑它,因为它接pipe并处理整个应用程序中每个文本字段的重新定位。

您需要将所有文本字段移至如下所示的滚动视图。

在这里输入图像说明

在StackOverflow和YouTube上都有多个键盘重叠问题的解决scheme。 它们都是编辑事件处理的变体。 对于懒惰和时间受限的人(比如我),我会build议在滚动视图的底部使用固定高度的页脚(有或没有内容的视图)。 我通常会在那里放置各种免责声明和帮助信息。 此页脚将始终“推”您的textview键盘上方。