Ich versuche verzweifelt, das herauszufinden, ich habe den ganzen Tag ohne Glück damit verbracht. Alles, was ich tun möchte, ist eine Liste von Textfeldern zu haben, auf die ein Benutzer klicken kann, und es wird die Tastatur auf die Seite legen, so dass A) das Feld nicht blockiert ist und (ich habe diesen Teil herausgebildet) und B) den Anfang von Die Ansicht wird nicht abgeschnitten, wenn die Tastatur aufspringt. Das ist, was ich bis jetzt (http://imgur.com/a/LExyo) habe, aber Sie können das Problem deutlich sehen ~ das ist der obere Teil der Ansicht, die ich nicht weiter scrollen kann. Ich habe versucht, das Ganze in einer Scrollview zu vergraben und dann die Inhaltsgröße der Scrollview zu ändern, aber das hat nichts bewirkt. Jede Hilfe wäre willkommen. Vielen Dank. (Ich versuche das in swift 3).Scrollview's Contentsize dynamisch einstellen funktioniert nicht
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)
}
}
}
}
Mögliches Duplikat von hier https://stackoverflow.com/questions/28813339/move-a-view-up-only-when -die-tastatur-deckt-ein-eingang-feld Wenn Sie Probleme haben, dies zu tun, gibt es wahrscheinlich etwas mit Ihrer Inhaltsgröße/Constraint-Layout. Ich habe funktionierende Lösung dieses Problems hier mit Tastaturabweisung und blättern Sie zum aktiven textField. https://github.com/kingreza/UIScrollViewSample/tree/master –
Danke Reza, das waren die Droiden, die ich suchte. –