我拼命想弄清楚這一點,我花了整整一天,沒有運氣。我想要做的是有一個用戶可以點擊的文本框列表,它會將鍵盤放在頁面上,這樣A)該字段不被阻塞,並且(我已經計算出該部分)和B)頂部彈出鍵盤時視圖不會被切斷。這是我迄今爲止(http://imgur.com/a/LExyo),但你可以清楚地看到問題〜這是我無法向上滾動的視圖的頂部。我試圖在scrollview中把所有東西都埋掉,然後改變scrollview的內容大小,但是沒有做任何事情。任何幫助,將不勝感激。謝謝。 (我正在嘗試在swift 3中做到這一點)。設置滾動查看的內容動態不起作用
class ViewController4: UIViewController, UITextFieldDelegate {
var dataState: Data?
@IBOutlet weak var UserNameLabel: UILabel!
@IBOutlet weak var TextField1Outlet: UITextField!
@IBOutlet weak var TextField2Outlet: UITextField!
@IBOutlet weak var TextField3Outlet: UITextField!
@IBOutlet weak var TextField4Outlet: UITextField!
@IBOutlet weak var TextField5Outlet: UITextField!
@IBOutlet var ViewFrame: UIView!
@IBOutlet weak var scrollView: UIScrollView!
@IBAction func TextField1Action(_ sender: Any) {
}
@IBAction func TextField2Action(_ sender: Any) {
}
@IBAction func TextField3Action(_ sender: Any) {
}
@IBAction func TextField4Action(_ sender: Any) {
}
@IBAction func TextField5Action(_ sender: Any) {
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
UserNameLabel.text = dataState?.LoginName
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let destinationViewController = segue.destination as? ViewController1 {
destinationViewController.dataState = dataState
}
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
override func viewDidLoad() {
super.viewDidLoad()
scrollView.contentSize = CGSize(width: self.view.frame.width, height: self.view.frame.height)
scrollView.delegate = self as? UIScrollViewDelegate
TextField1Outlet.returnKeyType = UIReturnKeyType.done
TextField1Outlet.delegate = self
TextField2Outlet.returnKeyType = UIReturnKeyType.done
TextField2Outlet.delegate = self
TextField3Outlet.returnKeyType = UIReturnKeyType.done
TextField3Outlet.delegate = self
TextField4Outlet.returnKeyType = UIReturnKeyType.done
TextField4Outlet.delegate = self
TextField5Outlet.returnKeyType = UIReturnKeyType.done
TextField5Outlet.delegate = self
NotificationCenter.default.addObserver(self, selector: #selector(ViewController4.keyboardWillShow), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(ViewController4.keyboardWillHide), name: NSNotification.Name.UIKeyboardWillHide, object: nil)
}
func keyboardWillShow(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
if self.view.frame.origin.y == 0{
self.view.frame.origin.y -= keyboardSize.height
let newHeight = self.view.frame.height + keyboardSize.height
scrollView.contentSize = CGSize(width: self.view.frame.width, height: newHeight)
}
}
}
func keyboardWillHide(notification: NSNotification) {
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue {
if self.view.frame.origin.y != 0{
self.view.frame.origin.y += keyboardSize.height
scrollView.contentSize = CGSize(width: self.view.frame.width, height: self.view.frame.height)
}
}
}
}
從這裏https://stackoverflow.com/questions/28813339/move-a-view-up-only-when可能的複製-the-keyboard-covers-an-input-field如果你遇到問題需要解決,那麼你的內容大小/約束佈局可能會有些問題。我在這裏解決鍵盤問題,並且滾動到活動的textField。 https://github.com/kingreza/UIScrollViewSample/tree/master –
謝謝Reza,那些是我一直在尋找的機器人。 –