【问题标题】:Make the textfiled swipe up when keyboard is used swift 5使用键盘时使文本字段向上滑动 swift 5
【发布时间】:2019-12-02 18:56:54
【问题描述】:

我正在尝试让文本字段txtAdd 在键盘出现时向上滑动,但我不太确定该怎么做。

这是向列表中添加项目的代码:

@IBAction func submitBntFunc(_ sender: Any) {
    if let text = txtAdd.text{
             if text == ""{
                 return
             }
             txtAdd.text = ""
             txtAdd.resignFirstResponder()
        return txtField.text.append("\(text) \n")

         }

}

我尝试使用下面的代码,但它并没有真正起作用。

guard let keyboardSize = userInfo[UIKeyboardFrameEndUserInfoKey] as? NSValue else {return}

【问题讨论】:

    标签: ios swift xcode11 swift5


    【解决方案1】:

    试试这段代码

    var originButton : CGFloat?
    
    override func viewDidLoad()
    {
         originButton = self.YOURBUTTON.frame.origin.y
         NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: UIResponder.keyboardWillShowNotification, object: nil)
         NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: UIResponder.keyboardWillHideNotification, object: nil)
    
    }
    
    @objc func keyboardWillShow(notification: NSNotification) {
        if let keyboard = ((notification.userInfo?[UIResponder.keyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue) {
            if self.view.frame.origin.y == 0 {
                self.YOURBUTTON.frame.origin.y -= keyboard.height
    
            }
        }
    }
    
    @objc func keyboardWillHide(notification: NSNotification) {
        if self.YOURBUTTON.frame.origin.y != originButton {
            self.YOURBUTTON.frame.origin.y = originButton!
        }
    }
    

    【讨论】:

    • 它似乎只是向上滑动的按钮,而不是提交的“txtAdd”......
    • 我添加了这一行 `self.txtAdd.frame.origin.y -= keyboard.height ` 但随后它一直向上滑动到顶部
    • 每次点击屏幕时,txtAdd 都会向上滑动
    • 你在使用约束吗?添加这一行'self.view.layoutIfNeeded()'
    【解决方案2】:

    在你的 viewDidLoad 方法中添加这个观察者:=

        NotificationCenter.default.addObserver(self, selector: #selector(keyboard), name: UIResponder.keyboardWillHideNotification, object: nil)
        NotificationCenter.default.addObserver(self, selector: #selector(keyboard), name: UIResponder.keyboardWillChangeFrameNotification, object: nil) 
    

    就是调用这个函数:=

        @objc func keyboard(notification: Notification){
        let userInfo = notification.userInfo!
        let keyboardScreenEndFrame = (userInfo[UIResponder.keyboardFrameEndUserInfoKey] as! NSValue).cgRectValue
        let keyboardViewEndFrame = view.convert(keyboardScreenEndFrame, to: view.window)
    
        if notification.name == UIResponder.keyboardWillHideNotification{
            //add your constrain here when keyboard is hiden
            self.scrollView.contentInset = UIEdgeInsets.zero
        }else{
            //add your constrain here when keyboard is visible
            self.scrollView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: keyboardViewEndFrame.height, right: 0)
        }
        scrollView.scrollIndicatorInsets = scrollView.contentInset
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-07
      • 2015-08-20
      • 2018-04-20
      相关资源
      最近更新 更多