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