iPhone如何在input时获取UITextField的文本?

我试图在单独的UILabel上显示对UITextField所做的更改。 有没有办法在用户input每个字符后捕获UITextField全文? 目前我正在使用这种方法,但它不捕获用户input的最后一个字符。

我知道UITextView有“didChange”方法,但我找不到UITextField方法。

 //does not capture the last character -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { [self updateTextLabelsWithText: textField.text]; return YES; } 

每个字符input后,如何从UITextField中取出文本?

谢谢!

  1. 首先添加一个UITextFieldUILabel到故事板/笔尖
  2. 现在为UILabel分配IBOutlet (这里我使用了myLabel
  3. UITextFieldDelegate分配给文件所有者,也在.h文件中实现相同的代理
  4. 使用这些代码行:

     - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string]; [self updateTextLabelsWithText: newString]; return YES; } -(void)updateTextLabelsWithText:(NSString *)string { [myLabel setText:string]; } 

希望这可以帮助。

只需处理“编辑已更改”事件

 [textField addTarget:self action:@selector(editingChanged:) forControlEvents:UIControlEventEditingChanged]; 

和select器:

 -(void) editingChanged:(id)sender { // your code } 

您可以手动执行此操作,也可以通过CTRL-将“编辑已更改”发送事件拖放到.h,为您创buildeditingChanged方法。

在Swift 2.0+中

  class CheckInViewController: UIViewController, UITextFieldDelegate { override func viewDidLoad() { super.viewDidLoad() yourTextField.delegate = self } func textField(textField: UITextField!, shouldChangeCharactersInRange range: NSRange, replacementString string: String!) -> Bool { var updatedTextString : NSString = textField.text as NSString updatedTextString = updatedTextString.stringByReplacingCharactersInRange(range, withString: string) self.methodYouWantToCallWithUpdatedString(updatedTextString) return true } } 

希望它能帮助你迅速的开拓者

使用addTarget Swift 2.0+进行Swift

  titleTextField.addTarget(self, action: #selector(textFieldTyping), forControlEvents: .EditingChanged) 

并实现selector

 func textFieldTyping(textField:UITextField) { //Typing } 

在Swift 3.0中:

其中一些解决scheme是一个字符落后,或者Swift和Obj-C的早期版本。 这是我用于Swift 3.0的

在课堂上,我宣布了一个占位符来存储文本。

 var tempName = "" 

在ViewDidLoad我使用:

 nameField.addTarget(self, action: #selector(typingName), for: .editingChanged) 

然后我做了一个叫做:

  func typingName(textField:UITextField){ if let typedText = textField.text { tempName = typedText print(tempName) } }