2 Stimmen

Wie man die Instanz von UITextField vergleicht

Ich habe 3 UITextFileds auf eine Ansicht, und ich möchte Logik in UITextFieldDelegate-Methode nur in zwei von Ihnen anwenden, wie ich das UITextField, die die Rückrufe ausgelöst bestimmen?

Vielen Dank im Voraus!

7voto

kennytm Punkte 488916

Normalerweise funktioniert ein einfacher Zeigervergleich, da man nur die Objektidentität überprüfen will.

-(BOOL)textFieldShouldReturn:(UITextField*)textField {
   if (textField != theIgnoredTextField) {
      ...

Alternativ können Sie auch .tag s in das Textfeld.

-(BOOL)textFieldShouldReturn:(UITextField*)textField {
   if (textField.tag != 37) {
      ...

Der Vorteil ist, dass Sie den Verweis auf theIgnoredTextField und die Markierung kann über Interface Builder eingestellt werden, aber sie beruht auf der Erkennung einer magischen Zahl "37".

4voto

progrmr Punkte 73486

Die Delegatmethoden haben einen Textfeld-Parameter, der auf das Textfeld-Objekt verweist. Sie können diesen Parameter mit Ihren Textfeldobjekten vergleichen, um zu sehen, um welches es sich handelt.

UITextField *field1, *field2, *field3;

In Ihrer Delegatenmethode können Sie den Parameter vergleichen:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range  replacementString:(NSString *)string
{
    if (textField == field1) {
        // do something special for field 1
    } ...

2voto

Jesse Naugher Punkte 9730

Wenn Sie die Delegiertenmethoden verwenden, wie z. B. - (void)textFieldDidEndEditing:(UITextField *)textField müssen Sie nur etwas tun wie

- (void)textFieldDidEndEditing:(UITextField *)textField
{
if (textField == myFirstTextField)
{
//blah
}
else if (textField == mySecondTextField)
{
//etc etc.
}
else
{
//WHEE!
}
}//method end

1voto

Costique Punkte 23644

Sie können die Zeiger vergleichen, wenn Sie Verweise auf sie in Ihrer Klasse ivars halten oder Sie können die Tag-Eigenschaft von UIView verwenden, je nachdem, was Ihnen besser gefällt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X