1. 扩展String
import Foundation
extension String {
func trimLeftSpace(cursorPosition:inout Int) -> String {
var start = 0
while start < self.count && (self[start] == " " || self[start] == " ") {
start += 1
}
guard start < self.count else {
return ""
}
let str = String(self[self.index(self.startIndex, offsetBy: start)..<self.index(self.startIndex, offsetBy: self.count)])
cursorPosition = cursorPosition - start
return str
}
}
2. 自定义UI控件
import Foundation
import UIKit
class TrimSpace: UITextField {
override init(frame: CGRect) {
super.init(frame: frame)
setupField()
}
required init?(coder: NSCoder) {
super.init(coder: coder)
setupField()
}
private func setupField() {
self.keyboardType = .default
self.addTarget(self, action: #selector(leftSpaceDeleteFormat), for: .editingChanged)
}
@objc func leftSpaceDeleteFormat(_ textField: UITextField) {
if textField.markedTextRange == nil {
var cursorPostion = self.offset(from: self.beginningOfDocument,
to: self.selectedTextRange!.start)
self.text = self.text!.trimLeftSpace(cursorPosition: &cursorPostion)
let targetPostion = self.position(from: self.beginningOfDocument,
offset: cursorPostion)!
self.selectedTextRange = self.textRange(from: targetPostion,
to: targetPostion)
}
}
}