2016-08-24 1 views
0

Ich habe eine Uiscrollview, die nicht die gleiche Höhe wie die Hauptansicht hat. Ich habe ein uitextfield und einen Knopf außerhalb dieses scrollview. Ich gebe dort einen Wert ein und wenn ich auf die Schaltfläche klicke, wird ein weiteres Textfeld in der Bildlaufansicht erstellt. Wenn ich erneut drücke, wird ein weiteres Textfeld unterhalb des zuvor erstellten Textfelds erstellt. Jetzt versuche ich, die Ansicht zu dem neu erstellten Textfeld zu rollen, das über der Tastaturansicht sichtbar sein sollte. Ich habe folgendes versucht. Es funktioniert nicht:Swift: Scrollen funktioniert nicht

func keyboardWillShow() { 
var userInfo = notification.userInfo! 
var keyboardFrame:CGRect = (userInfo[UIKeyboardFrameBeginUserInfoKey] as! NSValue).CGRectValue() 
let textField: UITextField = self.scrollView!.viewWithTag(rowsCount) as! UITextField 
let newRect: CGRect = CGRectMake(textField.frame.origin.x, textField.frame.origin.y, textField.frame.width, textField.frame.height) 
let newFrame = self.view.convertRect(newRect, fromView: nil) 
keyboardFrame = self.view.convertRect(keyboardFrame, fromView: nil) 
//   contentInset.bottom = newRect.origin.y + newRect.height 
      var viewRect: CGRect = self.view.frame 
      viewRect.size.height = viewRect.height - keyboardFrame.height - 40.0 

      if (!CGRectContainsPoint(viewRect, (newFrame.origin))) { 
       self.scrollView.scrollRectToVisible((newFrame), animated: true) 
      } 
} 

S.S .: rowsCount wird jedes Mal erhöht, wenn ein neues Textfeld erstellt wird.

+0

Keine genaue Anforderung !! Wenn Sie die Taste drücken, wird ein neues Textfeld erstellt. Möchten Sie dieses Textfeld als aktives Textfeld (die Tastatur wird angezeigt)? – Lion

+0

Ich möchte kein aktives Textfeld, da das aktive Textfeld immer derjenige ist, in dem ich den Wert eingabe (Der, der außerhalb der Benutzeransicht liegt). Was ich möchte, ist die Bildlaufansicht, um zum neu erstellten Textfeld zu scrollen. –

Antwort

0

Sie können wie tun,

scrollView.scrollRectToVisible(CGRect(x: x, y: y, width: 1, height: 1), animated: true) 

// or 

scrollView.setContentOffset(CGPoint(x: x, y: y), animated: true) 

Fahren Sie mit x und y auf diese auf die Schaltfläche klicken.

+0

funktioniert nicht. Das Problem ist, ich versuche zu überprüfen, ob dieses Textfeld innerhalb dieser Ansicht (uiscrollview - keyboardview) ist, aber mein Code überprüft, ob dieses Textfeld innerhalb der vollständigen uiscrollview oder nicht ist. –