Перемещение просмотра только в textView, а не в textField - PullRequest
1 голос
/ 05 мая 2020

У меня есть viewcontroler с 2 текстовыми полями и 1 текстовым окном. Я хочу переместить представление вверх, но только если выбрано текстовое представление, а не текстовые поля. В моем текущем коде следующее работает как задумано:

• вид остается на месте, если вы щелкаете по текстовому полю • вид перемещается вверх, если вы щелкаете в текстовом окне до того, как когда-либо нажимали на текстовое поле • вид перемещается вниз, если щелкнуть из текстового поля в текстовое поле

, но

• представление не перемещается вверх, если вы щелкаете из текстового поля в текстовое

class ViewController: UIViewController, UITextFieldDelegate, UITextViewDelegate {

    var textview = true
        func textFieldDidBeginEditing(_ textField: UITextField) {
           textview = false
            view.frame.origin.y = 0

        }

        func textViewDidBeginEditing(_ textView: UITextView) {
            textview = true
            **view.frame.origin.y = -keyboardRectAS.height + (view.frame.size.height - self.speichern.frame.size.height - self.speichern.frame.origin.y) - 10**
        }

    **var keyboardRectAS = CGRect()**
        @objc func keyboardWillChange (notification: Notification){

            guard let keyboardRect = (notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue else {
                return
            }
            **keyboardRectAS = keyboardRect**
            if notification.name ==  Notification.Name.UIKeyboardWillShow || notification.name == Notification.Name.UIKeyboardWillChangeFrame {

                    if self.textview == true {
                        view.frame.origin.y = -keyboardRect.height + (view.frame.size.height - self.speichern.frame.size.height - self.speichern.frame.origin.y) - 10

                        self.textview = false

                }



            }

            else {
                view.frame.origin.y = 0
            }

        }

    override func viewDidLoad() {
        textfield1.delegate = self
        textfield2.delegate = self
        textview.delegate = self

        NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillChange(notification:)), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
        NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillChange(notification:)), name: NSNotification.Name.UIKeyboardWillHide, object: nil)
        NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillChange(notification:)), name: NSNotification.Name.UIKeyboardWillChangeFrame, object: nil)
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...