Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
284 views
in Technique[技术] by (71.8m points)

ios - Getting the Value of a UITextField as keystrokes are entered?

Let's say I have the following code:

IBOutlet UITextField* nameTextField;
IBOutlet UILabel* greetingLabel;

I'd like the greetingLabel to read "Hello [nameTextField]" as soon as the user presses any key.

What I need basically is the iPhone equivalent of the Cocoa delegate method controlTextDidChange.

The textField:shouldChangeCharactersInRange: delegate method is called each time a keystroke occurs:

- (BOOL)              textField:(UITextField *)textField
  shouldChangeCharactersInRange:(NSRange)range     
              replacementString:(NSString *)string

The string argument returns the character that is pressed. The actual textField's value (nameTextField.text) remains blank however.

What am I missing here? (I'd like nameTextField to reflect the exact string that the user has entered so far).

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

It turns out, the easiest way to do this is using Interface Builder:

  • Add a IBAction (to the ViewController, say, as in this case)
  • Ctrl-Click (or right click) on the UITextField in Interface Builder
  • Connect the "Editing Changed" event to the File's Owner's IBAction added in the first step.

Works like a charm :) (I can't believe I spent numerous days on this, and to realize now that the solution was much simpler than I'd thought :P)


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...