2016-08-09 59 views
0

In einem Bildschirm, view-scrollview-contentview, gibt es viele Textfelder in der Inhaltsansicht, so dass ich eine scrollview verwenden, um sie in einem Bildschirm zu machen.Als das Problem ist, konnte ich nicht klicken oder das Textfeld eingeben weil ich weiß, dass der scrollview die contentview abgedeckt hat. Aber ich möchte das Textfeld eingeben und in der Lage sein, den Bildschirm zu scrollen. Ich habe versucht, hier viele Antworten zu finden, konnte aber die richtige Lösung nicht finden. Sowohl die Scrollview als auch die Inhaltsansicht sind Benutzerinteraktion aktiviert, aktivieren/deaktivieren die "Verzögerungen Inhalte berührt"/"Abbrechen Inhalte berührt" in Scrollview, funktioniert aber nicht. Schätzen Sie jede Hilfe.IOS Swift Anfänger

+1

Wo ist der Code? – imTachu

+0

Platziert das Textfeld auf der Bildlaufansicht? –

+0

Sie sollten das Textfeld in scrollview, nicht in der Inhaltsansicht einfügen. – Surely

Antwort

0

Erstellen Sie einfach zwei Meldungen (einmal, wenn die Tastatur erscheint und andere, wenn es dissapear) auf der viewDidLoad:

//Notifications for keyBoard when appears. 
    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(keyboardWillShow), name:UIKeyboardWillShowNotification, object: nil) 
    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(keyboardWillHide), name:UIKeyboardWillHideNotification, object: nil) 

die Funktion dann aufrufen, die die Polsterung berechnet und eine Scroll machen.

func keyboardWillShow(notification:NSNotification){ 
     var userInfo = notification.userInfo! 
     var keyboardFrame:CGRect = (userInfo[UIKeyboardFrameBeginUserInfoKey] as! NSValue).CGRectValue() 
     keyboardFrame = self.view.convertRect(keyboardFrame, fromView: nil) 

     var contentInset:UIEdgeInsets = self.scrollview.contentInset 
     contentInset.bottom = keyboardFrame.size.height 
     self.scrollview.contentInset = contentInset 
} 

func keyboardWillHide(notification:NSNotification){ 
     var contentInset:UIEdgeInsets = UIEdgeInsetsZero 
     self.scrollview.contentInset = contentInset 
} 
+0

Hallo, ich habe oben Codes versucht, funktioniert aber immer noch nicht. Gibt es andere Schritte, die ich tun muss? –

+0

Haben Sie den Ausgang von scrollView erstellt und seinen Namen in 'self.scrollview' geändert? Ich habe die Antwort bearbeitet, sehe die neue Struktur der Benachrichtigungen. –

+0

Ich halte das Steuerelement und ziehen Sie den Bildlauf an die .Switch Verbindung zu @IBOutlet schwach var scrollView: UIScrollView! Und ändere die self.scrollview in self.scrollView, stimmt das? –

0

Verwenden Sie TPKeyboardAvoiding für die automatische Scroll-Verwaltung, wenn Sie auf das Textfeld klicken.

https://github.com/michaeltyson/TPKeyboardAvoiding

Fabrikat TPKeyboardAvoidingScrollView Objekt und Textfeld in diesem Scroll hinzufügen, so wird es funktionieren.

Verwenden Sie im Storyboard den Klassennamen "TPKeyboardAvoidingScrollView" im Identity Inspector, und binden Sie ihn gut.

+0

Hallo, ich habe es heruntergeladen und die Datei TPKeyboardAvoiding in mein Projekt eingefügt. Legen Sie außerdem die scrollview-Klasse als TPKeyboardAvoidingScrollView fest. Aber es funktioniert immer noch nicht und erhielt die Warnung "Unbekannte Klasse TPKeyboardAvoidingScrollView in Interface Builder-Datei." Gibt es noch andere Schritte, die ich tun muss? –

+0

Muss in die Bridge-Datei importiert werden. –

+0

Es tut mir leid, ich bin ein Anfänger, können Sie mir bitte sagen, wie man es in Bridge-Datei importieren? –