Swift 4 中的键盘重叠 UITextField

keyboard overlapping UITextField in Swift 4

我正在尝试处理 UITextField 的滚动以避免键盘与它重叠。 Click here to view current OUTPUT i am getting ]StoryBoard Screenshot。当我单击最后一个文本字段时,我试图滚动视图 ..ie 密码字段。当我点击密码字段时,只有电子邮件字段即第二个向上滚动。第一个和最后一个字段没有滚动发生。我该如何解决这个问题?

`

//
//  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
    }


}

`

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

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

这是一个简单的 CocoaPod 库,您可以在您的 appDelegate 中导入并启用它,嗯……仅此而已。

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

在 Whosebug 和 YouTube 上有多种键盘重叠问题的解决方案。它们都是编辑事件处理的变体。对于懒惰和时间有限的人(比如我),我建议只在滚动视图的底部使用固定高度的页脚(有或没有内容的视图)。我通常会在那里放置不同种类的免责声明和帮助信息。此页脚将始终 "push" 键盘上方的文本视图。