华为鸿蒙 Spring Cloud Cluster模式 mAPI stack Amaze UI flowjs vue特点 vue前端 bootstrap管理系统模板 广告投放系统源码 删除数组第一个元素 java常用的包 coreldraw入门学习 java上传图片 完全去vm去虚拟化工具 python多线程 python3入门 python3下载安装 python字符串匹配 java初学者 java集合转数组 java怎么配置环境变量 java入门基础 java网页 凯立德地图免费下载 mac地址修改器 js添加元素 labview宝典 风火云 html特殊符号 unity3d下载 maya2016教程 JScodeblocks汉化包 程序卸载 办公室复印机使用方法 ip切换软件 正当防卫4存档 ug拔模 pr时间轴
当前位置: 首页 > 学习教程  > 编程语言

swift 5 中键盘遮挡输入框的解决办法

2021/2/13 20:16:52 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

自定义输入框,检测键盘高度及开始编辑,结束编辑事件,达到自动升降输入框不被键盘遮挡 YYYSwiftTextField.swift // // YYYSwiftTextField.swift // YYYSwiftProductTh // // Created by YYY on 2021/2/5. //import UIKitclass YYYSwiftTe…

 

自定义输入框,检测键盘高度及开始编辑,结束编辑事件,达到自动升降输入框不被键盘遮挡

 

YYYSwiftTextField.swift

//
//  YYYSwiftTextField.swift
//  YYYSwiftProductTh
//
//  Created by YYY on 2021/2/5.
//

import UIKit

class YYYSwiftTextField: UITextField, UITextFieldDelegate {

    var keyboardheight:CGFloat = CGFloat.init()
    
    override init(frame: CGRect) {
         
        super.init(frame: frame)
        self.delegate = self
        self.clearButtonMode = .whileEditing

        NotificationCenter.default.addObserver(self, selector:  #selector(KeyBoardHeightchange(_:)) , name: NSNotification.Name(rawValue: UIResponder.keyboardDidShowNotification.rawValue), object: nil)
        

    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    @objc func KeyBoardHeightchange(_ notification: Notification) {
        // 获取键盘信息
        let keyboardinfo:CGRect = notification.userInfo![UIResponder.keyboardFrameBeginUserInfoKey] as! CGRect

        keyboardheight  = (keyboardinfo.size.height)
        
        print("键盘弹起")

        print(keyboardheight)
        
        self.textFieldDidBeginEditing(UITextField.init())

    }
    func textFieldDidBeginEditing(_ textField: UITextField) {
        
        //输入框不直接在UIScrollView上需要
//        let rect = self.superview?.convert(self.frame, to: self.superview)

          //设置中心点偏移
          UIView.animate(withDuration: 0.3) {
            
            if(self.keyboardheight <= 0){
                return
            }
            
            let superScrollowView:UIScrollView = self.superview as! UIScrollView
           
            //输入框距离底部的高度 tempHeight = keyboardheight + 20 + 20 + self.height
            let tempHeight = self.keyboardheight + 20 + 20 + self.height
            
            //输入框的bottom  kScreenHeight - gao +self.height
            
            //scrollow的偏移量
            superScrollowView.contentOffset = CGPoint.init(x: 0, y: self.top - (kScreenHeight - tempHeight) + self.height)
            
            
          }

    }
    
    @available(iOS 10.0, *)
    func textFieldDidEndEditing(_ textField: UITextField, reason: UITextField.DidEndEditingReason) {
        
        UIView.animate(withDuration: 0.25) {

            let superView:UIScrollView = self.superview as! UIScrollView
            superView.contentOffset = CGPoint.init(x: 0, y: 0)

        }
    }
}

 


本文链接: http://www.dtmao.cc/news_show_700432.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?