2016-12-18 4 views
0

Я пытаюсь создать эту функцию сообщения, которая позволит вам вставлять текст, а также изображения (похожие на приложение Note на устройствах iOS). Тем не менее, я не могу понять, как перемещать или изменять размер моего ScrollView, когда клавиатура появляется, когда я нажимаю светло-серая область (это текстовое поле), поэтому серая область будет изменяться, а кнопка добавления будет перемещаться над когда он появится.Как изменить размер ScrollView при появлении клавиатуры?

// 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 
    } 
} 

Это контроллер Вид:

Controller View

ответ

0

Вы должны слушать уведомления keyboardDidShow/Hide и регулировать высоту мнение, скроллинга соответственно. Уведомление keyboardDidShowuserInfo содержит раму клавиатуры и, следовательно, высоту.

Предполагая, что ваш вид прокрутки имеет ограничение в нижней части супер-представления, вы можете сделать его IBOutlet и оживить его по высоте до высоты клавиатуры и вернуться к 0, когда клавиатура показывает и скрывает уведомления, соответственно.