2017-11-18 3 views
0

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 
} 





} 
+0

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) –

+0

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? –

+0

Ist Ihr Textfeld in scrollview? –

Antwort

0

diesen Code Versuchen

func textFieldDidBeginEditing(textField: UITextField!) 
{ 
    self.scrollView.setContentOffset(CGPoint.init(x: 0, y: scrollBy), animated: true) 
    // scrollBy - pass the height you want your scrollview to be scrolled when keyboard appears 
} 

func textFieldDidEndEditing(textField: UITextField!) 
{ 
    self.scrollView.setContentOffset(CGPoint.init(x: 0, y: 0), animated: true) 

    self.view.endEditing(true); 
} 
0

unten ist der Code, den ich mit Hilfe von Anregungen schrieb:

{ 

func textFieldDidBeginEditing(_ textField: UITextField) { 

    if textField.frame.maxY > self.view.frame.height * 0.6 
    { 
     self.scrollView.setContentOffset(CGPoint.init(x: 0, y: textField.frame.maxY - self.view.frame.height * 0.6 + 2.0), animated: true) 

    } 
    else{ 
     return 
    } 

} 

func textFieldDidEndEditing(_ textField: UITextField) 
{ 
    self.scrollView.setContentOffset(CGPoint.init(x: 0, y: 0), animated: true) 

    self.view.endEditing(true); 
} 

} 
Verwandte Themen