在網上看了好多方法,但是實踐后都不可以完美解決問題。
這里解決的需要整合一些方法進行完美解決問題。
需要新建一個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,可以解決當刪除時下移問題。
重寫這幾個方法就可以完美解決下移問題。