Question

J'ai l'habitude d'utiliser XCode le fait de développer mes applications et l'utilisation;J'ai pu créer un lien dans l'IB/Storyboard qui a fait la synthèse de cette méthodes:

- (void)addTarget:(id)target action:(SEL)action forControlEvents: (UIControlEvents)controlEvents

pour quand

Cependant, non, je fais tout par programme (en rubymotion, mais pas nécessairement pertinentes) et la recherche dans la documentation de UITextField j'ai trouvé quelques délégué méthodes, j'ai mis en œuvre comme suit:

def textFieldShouldReturn(text_field)
  text_field.resignFirstResponder
end

def textFieldShouldEndEditing(text_field)
  # this is for validations; don't set a first responder here
  true
end

def textFieldDidEndEditing(text_field)
  text_field == @email_field ? @password_field.becomeFirstResponder : delegate.validate_login_info
end

Mais en utilisant cela, j'ai trouvé que je ne pouvais pas l'onglet à travers les champs de saisie (j'en ai deux;e-mail et mot de passe) que j'ai pu avant avec la addTarget approche.

Quelle est la différence entre ces deux approches?L'ex-mettre en œuvre le second derrière les coulisses?Je ne comprends pas pourquoi on me permettra d'onglet et d'autres ne le seront pas.Ai-je simplement mettre en œuvre le délégué des méthodes différemment que la cible de l'action approche n'derrière les coulisses?

Commentaires appréciés, pachun

Était-ce utile?

La solution

Cela n'a rien à voir avec objectif/action.Je suppose que tu veux dire dans Interface Builder vous faites glisser à partir de la UITextField à l' File's Owner et sélectionnez délégué de la PALETTE.

Faire ci-dessus aurait pour effet d'attribuer la textField du délégué qui vous aurait besoin de le faire dans le code comme ceci

@email_field.delegate    = self
@password_field.delegate = self

le dessus est en supposant que la classe qui crée l' UITextFields 'agira à titre de délégué.

Autres conseils

Je ne sais pas s'il y a une différence entre la délégation et la cible / action dans ce cas, mais avec la délégation de cette façon fonctionne:

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    if (textField == self.firstTextField)
    {
        [self.secondTextField becomeFirstResponder];
    }
    else if (textField == self.secondTextField)
    {
        [textField resignFirstResponder];
        // proceed with login
    }
    return YES;
}

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
    // Validation
    return YES;
}

Cordialement

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top