簡體   English   中英

出現鍵盤時如何調整ScrollView的大小?

[英]How to resize ScrollView when keyboard appears?

我正在嘗試創建此發布功能,該功能將允許您插入文本和圖像(類似於iOS設備上的Note應用)。 但是,當我在淺灰色區域(這是一個文本視圖字段)上按鍵盤時,我不知道如何移動或調整ScrollView的大小,因此灰色區域將調整大小,並且添加按鈕將移動到鍵盤出現時。

//  PostViewController.swift
//
//  Created by Martynas on 09/12/2016.
//  Copyright © 2016 Martynas. All rights reserved.
//

import UIKit
import Firebase

class PostViewController: UIViewController, UITextFieldDelegate {

@IBOutlet var ScrollView: UIScrollView!
@IBOutlet var titleTextField: UITextField!
@IBOutlet var contentTextField: UITextView!
@IBOutlet var Menu: UIView!

@IBAction func hideKeyboardWhenSwippedDown(_ sender: Any) {
    contentTextField.endEditing(true)
}

override func viewDidLoad() {
    super.viewDidLoad()

    // Hide keyboard when...
    self.hideKeyboardWhenTappedAround() // ...press anywhere outside the keyboard

    self.titleTextField.delegate = self
    self.contentTextField.delegate = self

}

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

@IBAction func sendTapped(_ sender: Any) {

    if let uid = FIRAuth.auth()?.currentUser?.uid {
        if let title = titleTextField.text {
            if let content = contentTextField.text {
                let postObject: Dictionary<String, Any> = [
                    "uid": uid,
                    "title": title,
                    "content": content
                ]

                FIRDatabase.database().reference().child("posts").childByAutoId().setValue(postObject)

            }
        }
    }
}

@IBAction func addTapped(_ sender: Any) {

}

func textFieldDidBeginEditing(_ textField: UITextField) {
    if textField == contentTextField {
        ScrollView.setContentOffset(CGPoint(x: 0, y: 0), animated: true)
    } else {
        return
    }

}

func textFieldDidEndEditing(_ textField: UITextField) {
    if textField == contentTextField {
        ScrollView.setContentOffset(CGPoint(x: 0, y: 250), animated: true)
    } else {
        return
    }
}

// Hide keyboard when user presses 'return' key on the keyboard...
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    titleTextField.resignFirstResponder()
    return true
    }
}

這是控制器視圖:

控制器視圖

您需要收聽keyboardDidShow/Hide通知並相應地調整滾動視圖的高度。 keyboardDidShow通知userInfo包含鍵盤的框架以及高度。

假設滾動視圖在超級視圖的底部具有約束,則可以使其成為IBOutlet並對其進行動畫處理,使其恆定於鍵盤的高度,並在分別觸發鍵盤顯示和隱藏通知時使其返回0。

暫無
暫無

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

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