2017-02-07 9 views
0

Mein Problem ist, dass, wenn ich meine Anpassung tun UITextField, dann shouldChangeCharactersIn() -Methode nicht aufgerufen wird, aber wenn ich auf diese Anpassung nicht gelten, geht alles in Ordnung.UITextField - shouldChangeCharactersIn mit self.addSubview()

Ich benutze die Bibliothek SkyFloatingLabelTextField

Erste Datei:

override func viewDidLoad() { 
    super.viewDidLoad() 

    emailField.setRegistrationFieldStyleWith(title: "E-mail") 
    emailField.delegate = self 
} 

zweite Datei mit Erweiterungen:

func setRegistrationFieldStyleWith(title: String) { 
    let textField = SkyFloatingLabelTextField(frame: CGRect(x: 0, y: 0, width: 215, height: 40)) 
    textField.placeholder = title 
    textField.title = title 

    textField.tintColor = overcastBlueColor 
    ... 
    ... 

    self.addSubview(textField) 
} 

Vielleicht, die mit dieser Bibliothek konfrontiert? Oder beginnt sich die Eingabeverarbeitungsmethode anders zu verhalten, wenn die Felder angepasst werden sollen?

+0

Was wollen Sie erreichen? – Poles

+0

Versuch textField.delegate = self in setRegistrationFieldStyleWith Methode –

+0

Ich möchte eine einfache Überprüfung der Gültigkeit einer E-Mail hinzufügen. Wenn Sie UITextField ändern, rufen Sie die Methode sentChangeCharactersIn auf. Normalerweise funktionierte es, aber als ich die Bibliothek benutzte, hörte es auf zu arbeiten, also denke ich, antworte auf der Oberfläche oder lohnt es sich, die Bibliothek zu erkunden ?! :) – MarioCode

Antwort

1

Versuchen Sie, diese

override func viewDidLoad() { 

    super.viewDidLoad() 

    emailField.setRegistrationFieldStyleWith(title: "E-mail") 

    for view in emailField.subviews { 

     if view.isKind(of: UITextField.self) { 

      let textFieldView = view as! UITextField 
      textFieldView.delegate = self 
     } 
    } 
} 
+0

hinzugefügt habe Ich verstehe immer noch nicht, wie es funktioniert, aber es funktioniert wirklich: D Vielen Dank! – MarioCode

+0

Willkommen bro :-) –

+0

Hier finde ich nur, dass benutzerdefinierte TextField, die als Unteransicht von EmailField und Festlegen von Delegaten hinzugefügt wird. Wenn Sie in emailField eingeben, geben Sie tatsächlich das angepasste textField ein, da es sich um eine Unteransicht von emailField handelt. Um also die Delegate-Methode zum Anpassen von textField zu verwenden, sollten Sie den Delegaten auf dieses textField und nicht auf emailField festlegen. Ich hoffe du verstehst –

Verwandte Themen