美文网首页
iOS Swift监听键盘通知和获取距离底部间距

iOS Swift监听键盘通知和获取距离底部间距

作者: Lee坚武 | 来源:发表于2022-04-19 09:55 被阅读0次

    本人亲测有效!绝对可靠!更多交流可以家魏鑫:lixiaowu1129,一起探讨iOS相关技术!

    首先在viewDidLoad()方法中:分别添加键盘即将弹出、即将消失和frame修改的通知

    //键盘监听
            NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(_:)), name: UIResponder.keyboardWillShowNotification, object: nil)
            
            NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(_:)), name: UIResponder.keyboardWillHideNotification, object: nil)
    

    2.实现键盘监听事件

    /*键盘弹出*/
        @objc func keyboardWillShow(_ showNoti:Notification){
            
            KeyboardFrame = (showNoti.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as! NSValue).cgRectValue
            
            let keyboardY = KeyboardFrame.origin.y
            if keyboardY <= self.view.center.y + self.alertView.frame.height/2{
                
                UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 1.0, initialSpringVelocity: 15.0, options: .curveLinear, animations: {
                    
                    if (self.hasTextFields == true && self.firstShow == false){
                        
                        self.hasTextFields = false;
                        
                    }
                        
                    self.alertView.frame.origin.y = keyboardY - self.alertView.frame.height - 15
                    self.contentView.frame = self.alertView.bounds
                    
                    
                }, completion: nil)
                
            }
            
        }
        
        /*键盘隐藏*/
        @objc func keyboardWillHide(_ hideNoti:Notification){
            
            UIView.animate(withDuration: 0.5, delay: 0, usingSpringWithDamping: 1.0, initialSpringVelocity: 5.0, options: .curveEaseOut, animations: {
                
                if self.contentViewFrameNormal != nil{
                    
                    self.alertView.frame = self.contentViewFrameNormal
                    
                }
                
                self.alertView.center = self.view.center
                self.contentView.frame = self.alertView.bounds
                
            }, completion: nil)
            
        }
    

    3.收起键盘的事件

    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
            //收起键盘
            textField.resignFirstResponder()
            return true
        }
    

    4.移除通知

    deinit {
            NotificationCenter.default.removeObserver(self)
            print("AntScanCodeViewController deinit")
        }
    

    相关文章

      网友评论

          本文标题:iOS Swift监听键盘通知和获取距离底部间距

          本文链接:https://www.haomeiwen.com/subject/jkhsertx.html