Objective c 仅在textView上移动视图,不在textField上移动视图

Objective c 仅在textView上移动视图,不在textField上移动视图,objective-c,swift,Objective C,Swift,我有一个带有2个文本字段和1个文本视图的ViewControlr。我想向上移动视图,但仅当选择了文本视图而不是文本字段时。在我当前的代码中,以下代码与预期的一样工作: •如果单击文本字段,视图将保持不变 •如果您在单击文本字段之前单击文本视图,视图将向上移动 •如果单击从文本视图到文本字段,视图将向下移动 但是 •如果从文本字段单击到文本视图,视图不会向上移动 class ViewController: UIViewController, UITextFieldDelegate, UITextV

我有一个带有2个文本字段和1个文本视图的ViewControlr。我想向上移动视图,但仅当选择了文本视图而不是文本字段时。在我当前的代码中,以下代码与预期的一样工作:

•如果单击文本字段,视图将保持不变 •如果您在单击文本字段之前单击文本视图,视图将向上移动 •如果单击从文本视图到文本字段,视图将向下移动

但是

•如果从文本字段单击到文本视图,视图不会向上移动

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

当您从textview切换到textfield时,是否调用了
textFieldDidBeginEditing()
?是和
textViewDidBeginEditing()
相反,我解决了这个问题,并将缺少的代码行添加到****所示的原始帖子中。我使用了一个全局变量,并将keyboardRect分配给了它
textFieldDidBeginEditing()
当您从textview切换到textfield时调用?是和
textViewDidBeginEditing()
另一种方法我解决了它,并将缺少的代码行添加到****指示的原始帖子中。我取了一个全局变量,并将keyboardRect分配给它