簡體   English   中英

出現鍵盤時管理UIView

[英]Managing UIView when keyboard appears

我正在處理鍵盤覆蓋剛剛獲得第一響應者的元素時移動視圖的問題。 我從研究這個問題開始,這給了我一個很好的開端。 將觀察者添加到UIKeyboardWillShowUIKeyboardWillHide我以以下代碼結束:

func keyboardWillShow(notification: Notification) {

        guard let userInfo = notification.userInfo,
              let kbRect = userInfo[UIKeyboardFrameEndUserInfoKey] as? NSValue,
              let duration = userInfo[UIKeyboardAnimationDurationUserInfoKey] as? Double else {
            return
        }

        let kbSize = kbRect.cgRectValue.size

        UIView.animate(withDuration: duration) {
            self.view.transform = CGAffineTransform(translationX: 0, y: -kbSize.height)
        }
    }

    func keyboardWillHide(notification: Notification) {
        UIView.animate(withDuration: 0.3) {
            self.view.transform = CGAffineTransform(translationX: 0, y: 0)
        }
    }

在文本字段獲得第一響應者的情況下,視圖可以上下移動,這在某種意義上來說是很好的。 但是,當按下一個鍵時,視圖會再次移動,從而失去了首先將其向上移動的目的。 我做了一些GIF以便更好地描述這種不希望的行為,第一次出現和消失鍵盤時都顯示正確的行為,第二次在按下鍵時顯示了不希望的行為。

提出的問題

因此,問題是,有沒有一種方法可以防止按下鍵時視圖移動? 當用戶使用鍵盤插入文本時,我希望視圖保持“向上”。

您應該移動視圖應用程序,而不是對其進行轉換,請使用:

self.view.frame.origin.y -= kbSize.height

轉換的行為應該像現在一樣

將您的UIView設置為插座,並將此代碼插入viewDidLoad中

yourView.translatesAutoresizingMaskIntoConstraints = true

暫無
暫無

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

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