In Swift-3 benötigt die folgende Methode "_" vor textField, damit diese Delegate-Methode aufgerufen wird. In meinem Fall hilft es mir.
%Vor% Ich versuche, textFieldShouldBeginEditing
zu verwenden, um zu verhindern, dass die Tastatur für eine benutzerdefinierte UITextField
angezeigt wird. Ich implementiere alle UITextFieldDelegate
Methoden. Aus irgendeinem Grund wird textFieldShouldBeginEditing
jedoch nie aufgerufen.
Die folgenden Delegate-Methoden werden IMMER aufgerufen:
%Vor%Die Ansicht ist folgendermaßen aufgebaut:
UIViewController
, das eine Scrollansicht enthält. Abhängig vom Status der Ansicht enthält diese ScrollView eine UIView
mit einer Liste von benutzerdefiniertem% co_de%.
Ich verwende iOS 4.3.5 (8L1) auf diesem Gerät.
Irgendwelche Ideen?
Bearbeiten; einige Code-Schnipsel hinzugefügt:
UITextFields
hat die folgende Schnittstelle
Wenn der UIViewController geladen ist, verbinde ich alle UITextFields mit
mit der Ansicht %Vor%(Vereinfachte) Delegate-Implementierungen in AViewController
%Vor% Benutzerdefiniert UIViewController
code
Vereinfachte Implementierungsdatei -
%Vor% Ist es möglich, dass textFieldShouldBeginEditing
von der Standardimplementierung der Methode canBecomeFirstResponder
aufgerufen wird?
Versuchen Sie, die Methode mit [super canBecomeFirstResponder]
zu implementieren oder entfernen Sie sie einfach.
Für jeden, der hierher kommt und keine Lösung gefunden hat. Mein Problem war, dass ich das textField in IB erstellt habe und dann eine in meiner viewDidLoad zuweisen. Als ich die Instanziierung entfernte, funktionierte der Delegat korrekt, da er an den richtigen TF gebunden war.
%Vor%Ich habe auch auf das Problem hingewiesen, dass textFieldShouldEndEditing oder textFieldShouldReturn nicht aufgerufen wurde. Dies geschah nach dem Aktualisieren des Storyboards meiner App.
Die Delegate-Methoden wurden aufgerufen, wenn die UITextFields Teil der ViewController-Unterklasse waren.
Wurden sie jedoch innerhalb des ViewControllers in eine Scroll-Ansicht verschoben, wurden die Methoden nicht mehr aufgerufen.
Das Setzen ihrer App-Delegates auf self in ViewDidLoad hat dieses Problem behoben.
%Vor%Sie wissen nicht, ob beim Kopieren des Codes ein Tippfehler aufgetreten ist, aber der Methodenname ist falsch:
KORREKT - textFieldShouldBeginEditing
YOURS - textFieldShoulBeginEditing (fehlendes "d")
Tags und Links objective-c iphone ios mobile