簡體   English   中英

打開鍵盤時移動視圖的問題

[英]Problem with moving the view when the keyboard is open

打開鍵盤時,文本輸入和按鈕的移動出現問題。 我正在使用以下代碼

 override func viewDidLoad() {
        super.viewDidLoad()
        NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillChange(notification:)), name: UIResponder.keyboardWillShowNotification, object: nil)

         NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillChange(notification:)), name: UIResponder.keyboardWillChangeFrameNotification, object: nil)
        NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillChange(notification:)), name: UIResponder.keyboardWillHideNotification, object: nil)
}

 deinit {
        NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardWillShowNotification, object: nil)

        NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardWillChangeFrameNotification, object: nil)
        NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardWillHideNotification, object: nil)
    }


    @objc func keyboardWillChange(notification: NSNotification) {

        guard let keyboardSize = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue else {
            return
        }

        if notification.name == UIResponder.keyboardWillShowNotification || notification.name == UIResponder.keyboardWillChangeFrameNotification {
            view.frame.origin.y = -keyboardSize.height
        } else {
            view.frame.origin.y = 0
        }

    }

當我開始在文本字段中輸入內容時出現問題,以下是之前的圖像: https : //imgur.com/a/cbQbJzW和之后的圖像: https : //imgur.com/a/f1Nakrs

我很抱歉文件的語言沒有說任何空格。

我想知道為什么會這樣,可能是因為我在灰色文本字段中使用了CocoaPods-YoshikoTextField嗎?

謝謝!


import UIKit

class ViewController: UIViewController, UITextFieldDelegate {

    @IBOutlet weak var backgroundScrollView: UIScrollView!

    override func viewDidLoad() {
        super.viewDidLoad()

        NotificationCenter.default.addObserver(self, selector: #selector(ViewController.keyboardWillShow), name: UIResponder.keyboardWillShowNotification, object: nil)

        NotificationCenter.default.addObserver(self, selector: #selector(ViewController.keyboardWillHide), name: UIResponder.keyboardWillHideNotification, object: nil)

        // Do any additional setup after loading the view, typically from a nib.
    }

    @objc func keyboardWillShow(notification:NSNotification) {
        adjustingHeight(true, notification: notification)
    }

    @objc func keyboardWillHide(notification:NSNotification) {
        adjustingHeight(false, notification: notification)
    }

    func adjustingHeight(_ isShow:Bool, notification:NSNotification) {

        let userInfo = notification.userInfo!

        let keyboardFrame = (userInfo[UIResponder.keyboardFrameBeginUserInfoKey] as! NSValue).cgRectValue

        let changeInHeight = (keyboardFrame.height + 20) * (isShow ? 1 : -1)

        backgroundScrollView.contentInset.bottom += changeInHeight

        backgroundScrollView.scrollIndicatorInsets.bottom += changeInHeight

    }

    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        self.view.endEditing(true)
        return true
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM