Ich versuche einen Code zu schreiben, um sicherzustellen, dass UITextField nach oben bewegt wird, wenn die Tastatur vorhanden ist. Ich habe einen Code geschrieben, der auf dem basiert, was ich im Stapelüberlauf gefunden habe, aber es funktioniert nicht. Der ursprüngliche Code wurde in objective-c geschrieben, aber ich kenne ihn nicht und entschied mich daher, Code in swift zu schreiben.Bewegen Sie UITextField nach oben, wenn die Tastatur erscheint
kann jemand sagen, was ich hier wring tun kann?
{
// moving text box up when tyoing
func registerForKeyboardNotifications()
{
//Adding notifies on keyboard appearing
NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWasShown(notification:)), name: NSNotification.Name.UIKeyboardDidShow, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillBeHidden(notification:)), name: NSNotification.Name.UIKeyboardWillHide, object: nil)
}
@objc func keyboardWasShown(notification: NSNotification)
{
//Need to calculate keyboard exact size due to Apple suggestions
self.scrollView.isScrollEnabled = true
let info : NSDictionary = notification.userInfo! as NSDictionary
let keyboardSize = (info[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue.size
let contentInsets : UIEdgeInsets = UIEdgeInsetsMake(0.0, 0.0, keyboardSize!.height, 0.0)
self.scrollView.contentInset = contentInsets
self.scrollView.scrollIndicatorInsets = contentInsets
var aRect : CGRect = self.view.frame
aRect.size.height -= keyboardSize!.height
if (yourEmail) != nil
{
if (!aRect.contains(yourEmail!.frame.origin))
{
self.scrollView.scrollRectToVisible(yourEmail!.frame, animated: true)
}
}
}
@objc func keyboardWillBeHidden(notification: NSNotification)
{
//Once keyboard disappears, restore original positions
let info : NSDictionary = notification.userInfo! as NSDictionary as NSDictionary
let keyboardSize = (info[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue.size
let contentInsets : UIEdgeInsets = UIEdgeInsetsMake(0.0, 0.0, -keyboardSize!.height, 0.0)
self.scrollView.contentInset = contentInsets
self.scrollView.scrollIndicatorInsets = contentInsets
self.view.endEditing(true)
self.scrollView.isScrollEnabled = false
}
func textFieldDidBeginEditing(_ textField: UITextField)
{
yourEmail = textField
}
func textFieldDidEndEditing(_ textField: UITextField)
{
yourEmail = nil
}
}
Mögliche Duplikat [Wie ein UITextField nach oben machen, wenn Tastatur vorhanden ist ?] (https://stackoverflow.com/questions/1126726/how-to-make-a-uitxtfield-move-up-when-keyboard-is-present) –
Hallo Rishu, ich versuche, den Code in Swift zu schreiben .. plus Ich habe den Code geschrieben, aber das Textfeld bewegt sich nicht nach oben r es versteckt sich hinter der Tastatur ... Ich nicht warum? –
Ist Ihr Textfeld in scrollview? –