Domanda

Ho usato per usare Xcode, sviluppare le mie app e usando ciò;Potrei creare un collegamento in IB / Storyboard che sintetizzò questo metodo:

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

per quando

Tuttavia, no, lo sto facendo tutto programmaticamente (in Rubymotion, anche se non necessariamente rilevante) e guardando nella documentazione per UitextField ho trovato alcuni metodi delegati, che ho implementato come segue:

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
.

Ma usare questo, ho scoperto che non potevo scegliere i campi di input (di cui ho due; e-mail e password) come potevo prima con l'approccio aggiuntivo.

Qual è la differenza tra questi due approcci?L'ex implementa il secondo dietro le quinte?Non capisco perché uno mi permetterà di tabbiare e l'altro non lo farà.Ho appena implementato i metodi delegati in modo diverso rispetto all'approccio target / azione dietro le quinte?

Feedback apprezzato, Pachun

È stato utile?

Soluzione

Questo non ha nulla a che fare con il bersaglio / l'azione.Assumendo che tu intenda nel costruttore di interfaccia si trascinerà dal UITextField al File's Owner e selezionare Delegato dall'HUD.

Fare di quanto sopra avrebbe l'effetto di assegnare il delegato del campo di testo che dovresti fare in codice come questo

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

Quanto sopra sta assumendo che la classe che crea la UITextField fungerà come il loro delegato.

Altri suggerimenti

Non so se c'è alcuna differenza tra la delegazione e l'obiettivo / azione in questo caso, ma con la delegazione in questo modo funziona:

- (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;
}
.

Saluti

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top