iPhone如何在打字时获取UITextField的文字?

Ale*_*one 60 iphone objective-c uitextfield ios

我试图UITextField在一个单独的上显示对a 做出的更改UILabel.有没有办法捕获UITextField用户键入的每个字符后的全文?目前我正在使用此方法,但它不捕获用户输入的最后一个字符.

我知道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;
}
Run Code Online (Sandbox Code Playgroud)

如何在输入每个字符后从UITextField中取出文本?

谢谢!

Mru*_*nal 140

  1. 首先添加一个UITextField并添加UILabel到storyboard/nib
  2. 现在分配IBOutletUILabel(这里我使用了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];
    }
    
    Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.


小智 70

只需处理"编辑已更改"事件即可

[textField addTarget:self 
              action:@selector(editingChanged:)
    forControlEvents:UIControlEventEditingChanged];
Run Code Online (Sandbox Code Playgroud)

和选择器:

-(void) editingChanged:(id)sender {
   // your code
}
Run Code Online (Sandbox Code Playgroud)

您可以手动执行此操作,也可以通过CTRL拖动"编辑已更改"已发送事件到.h,为您创建editingChanged方法.

  • 这实际上是一个接受的更好的解决方案.谢谢!.当您从文本字段中删除最后一个字符时,接受的答案将不会完全清除标签文本. (10认同)
  • 你的解决方案很完美!谢谢 (3认同)

Col*_*ris 5

在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
 }

}
Run Code Online (Sandbox Code Playgroud)

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


UnR*_*ewa 5

Swift with addTarget Swift 2.0+

   titleTextField.addTarget(self, action: #selector(textFieldTyping), forControlEvents: .EditingChanged)
Run Code Online (Sandbox Code Playgroud)

并实施 selector

func textFieldTyping(textField:UITextField)
{
    //Typing
}
Run Code Online (Sandbox Code Playgroud)