完美解决UITextField输入时文字往下偏移的问题

在网上看了好多方法,但是实践后都不可以完美解决问题。
这里解决的需要整合一些方法进行完美解决问题。

需要新建一个UITextField的子类,重写以下方法:

override func textRect(forBounds bounds: CGRect) -> CGRect {
        let originalBounds = super.textRect(forBounds: bounds)
        return originalBounds.insetBy(dx: 0, dy: 3)
    }

override func editingRect(forBounds bounds: CGRect) -> CGRect {
        let originalBounds = super.editingRect(forBounds: bounds)
        return originalBounds.insetBy(dx: 0, dy: 3)
    }

这两个方法可以解决当输入超出范围时文字下移问题。

override func layoutSubviews() {
        super.layoutSubviews()
        for view in self.subviews {
            if let scrollview = view as? UIScrollView {
                var offset = scrollview.contentOffset
                if offset.y != 0 {
                    offset.y = 0
                    scrollview.contentOffset = offset
                }
                break
            }
        }
    }

重写layoutSubviews将scrollview的contentOffset有偏移的设置为0,可以解决当删除时下移问题。

重写这几个方法就可以完美解决下移问题。

参考内容

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.badgeVaule气泡提示 2.git终端命令方法> pwd查看全部 >cd>ls >之后桌面找到文件夹内容...
    i得深刻方得S阅读 4,752评论 1 9
  • 一.UITextField属性 0.enablesReturnKeyAutomatically 默认为No,如果设...
    奋斗ing0310阅读 1,688评论 0 2
  • 五一的出行总有一种人挤人的氛围,对于第一次的短途徒步,有你的陪伴,实属美好的回忆… 凌晨五点半的闹钟,在悠扬歌声却...
    幽呦阅读 323评论 0 2
  • 皆说妖无情, 怎敌人无心? 不怕世道乱, 唯恐人性泯。
    奈何薇薇阅读 155评论 0 2
  • 1) 和罗天在一起,是因为钱,这一点我没有对他避讳过,他也欣然接受。当我习惯式回问他为什么喜欢我的时候,他说,我叫...
    一只失忆的猫_阅读 229评论 0 0