2 Stimmen

Erkennen von iOS UI-Ereignissen in programmatisch erstellten Steuerelementen

Ich möchte eine Texteingabe (UITextField) haben, die ich im Haupt-View-Controller erstelle, auf die die Eingabe des Benutzers (speziell wenn er die "Return"-Taste der Tastatur drückt) reagiert, aber ich kann keinen Weg finden, dies zu tun.

Ich verstehe, dass der "übliche" Weg, dies zu tun, darin besteht, die Steuerung im Interface Builder zu erstellen und damit Ereignisse an die ausgesetzten IBAction-Methoden anzuschließen, aber ich möchte dies ohne Interface Builder machen.

Alternativ

Ich kann die Steuerung im Interface Builder erstellen und ihre Ereignisse normal verbinden, aber wie komme ich dann an das Objekt, um es zu steuern (ich möchte es nur ein- und ausblenden und vielleicht neu positionieren) von meinem Code aus?

Ich kann wieder keinen Weg finden, dies zu tun.

Beide Wege würden für mich funktionieren - es ist mir wirklich egal, wie ich das UITextField erstelle.

Danke im Voraus

Mike Peat

1voto

Kai Huppmann Punkte 10583

Sie könnten einen Beobachter zum Benachrichtigungscenter hinzufügen, wie hier:

[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(keyPressed:) name: UITextFieldTextDidChangeNotification object: nil];

und die entsprechende Methode implementieren:

-(void) keyPressed: (NSNotification*) notification
{
  NSLog([[notification object]text]);
}

1voto

arnoapp Punkte 2376

Sie müssen einen Delegierten für das TextField einrichten.

textField.delegate = self;

Der Delegierte hat bestimmte Methoden, die auf Aktionen mit dem TextField reagieren.

Sie können auf die Benutzereingabe mit der Delegiertenmethode reagieren:

- (void)textFieldDidEndEditing:(UITextField *)textField

Es wird aufgerufen, nachdem die Done-Taste (oder welche Taste auch immer Sie zum Beenden der Bearbeitung verwenden) gedrückt wurde.

Hoffentlich ist das, wonach Sie suchen.

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