Sök…


Introduktion

Med hjälp av anpassad UITextField kan vi manipulera beteendet i textfält!

Anpassad UITextField för filtrering av inmatningstext

Här är ett exempel på anpassad UITextField som bara tar numerisk text och kasserar allt annat.

OBS! För iPhone är det enkelt att göra detta med hjälp av tangentbordet Number, men för iPad finns det inget tangentbord med endast nummer

class NumberTextField: UITextField {
    
required init(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    registerForTextFieldNotifications()
}

override init(frame: CGRect) {
    super.init(frame: frame)
}

override func awakeFromNib() {
    super.awakeFromNib()
    keyboardType = .numberPad//useful for iPhone only
}

private func registerForTextFieldNotifications() {
    NotificationCenter.default.addObserver(self, selector: #selector(NumberTextField.textDidChange), name: NSNotification.Name(rawValue: "UITextFieldTextDidChangeNotification"), object: self)
}

deinit {
    NotificationCenter.default.removeObserver(self)
}

func textDidChange() {
    text = filteredText()
}
private func filteredText() -> String {
    let inverseSet = CharacterSet(charactersIn:"0123456789").inverted
    let components = text!.components(separatedBy: inverseSet)
    return components.joined(separator: "")
}
}

Så var vi än vill ha textfält som bara tar siffror som inmatningstext kan vi använda detta anpassade UITextField

Anpassad UITextField för att avvisa alla åtgärder som kopia, klistra in, etc.

Om vi vill inaktivera alla åtgärder som Kopiera, klistra in, ersätta, välja osv från UITextField kan vi använda följande anpassade textfält:

class CustomTextField: UITextField {

var enableLongPressActions = false

required init(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)!
}

override init(frame: CGRect) {
    super.init(frame: frame)
}

override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
    return enableLongPressActions
}
}

Med egenskapen enableLongPressActions kan vi aktivera alla åtgärder när som helst senare, om det behövs.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow