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!
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!
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".
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
} ...
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
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.