完美解决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,可以解决当删除时下移问题。

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

参考内容

你可能感兴趣的:(ios)