2016-12-18 3 views
0

Ich versuche, diese Post-Funktion zu erstellen, mit der Sie sowohl Text als auch Bilder einfügen können (ähnlich der Note-App auf iOS-Geräten). Ich kann jedoch nicht herausfinden, wie ich meine ScrollView verschieben oder skalieren kann, wenn die Tastatur erscheint, wenn ich auf den hellgrauen Bereich drücke (es ist ein Textansichtsfeld), so dass sich die Größe des grauen Bereichs ändert und die Schaltfläche "Hinzufügen" über die Tastatur, wenn es erscheint.Wie ändert man die Größe von ScrollView, wenn die Tastatur erscheint?

// PostViewController.swift 
// 
// Created by Martynas on 09/12/2016. 
// Copyright © 2016 Martynas. All rights reserved. 
// 

import UIKit 
import Firebase 

class PostViewController: UIViewController, UITextFieldDelegate { 

@IBOutlet var ScrollView: UIScrollView! 
@IBOutlet var titleTextField: UITextField! 
@IBOutlet var contentTextField: UITextView! 
@IBOutlet var Menu: UIView! 

@IBAction func hideKeyboardWhenSwippedDown(_ sender: Any) { 
    contentTextField.endEditing(true) 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Hide keyboard when... 
    self.hideKeyboardWhenTappedAround() // ...press anywhere outside the keyboard 

    self.titleTextField.delegate = self 
    self.contentTextField.delegate = self 

} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

@IBAction func sendTapped(_ sender: Any) { 

    if let uid = FIRAuth.auth()?.currentUser?.uid { 
     if let title = titleTextField.text { 
      if let content = contentTextField.text { 
       let postObject: Dictionary<String, Any> = [ 
        "uid": uid, 
        "title": title, 
        "content": content 
       ] 

       FIRDatabase.database().reference().child("posts").childByAutoId().setValue(postObject) 

      } 
     } 
    } 
} 

@IBAction func addTapped(_ sender: Any) { 

} 

func textFieldDidBeginEditing(_ textField: UITextField) { 
    if textField == contentTextField { 
     ScrollView.setContentOffset(CGPoint(x: 0, y: 0), animated: true) 
    } else { 
     return 
    } 

} 

func textFieldDidEndEditing(_ textField: UITextField) { 
    if textField == contentTextField { 
     ScrollView.setContentOffset(CGPoint(x: 0, y: 250), animated: true) 
    } else { 
     return 
    } 
} 

// Hide keyboard when user presses 'return' key on the keyboard... 
func textFieldShouldReturn(_ textField: UITextField) -> Bool { 
    titleTextField.resignFirstResponder() 
    return true 
    } 
} 

Dies ist der Controller-Ansicht:

Controller View

Antwort

0

Sie müssen die keyboardDidShow/Hide Benachrichtigung hören und die Scroll-Ansicht der Höhe entsprechend anpassen. Die keyboardDidShow Benachrichtigung userInfo enthält den Rahmen der Tastatur und somit die Höhe.

Vorausgesetzt, dass Ihre Bildlaufansicht am unteren Rand der Superansicht eine Einschränkung aufweist, können Sie sie als IBOutlet animieren und auf die Höhe der Tastatur und wieder auf 0 animieren, wenn die Tastatur zum Ein- und Ausblenden von Benachrichtigungen aktiviert wird.

Verwandte Themen