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中取出文本?
谢谢!
- 首先添加一个
UITextField
和UILabel
到故事板/笔尖 - 现在为
UILabel
分配IBOutlet
(这里我使用了myLabel ) - 将
UITextFieldDelegate
分配给文件所有者,也在.h文件中实现相同的代理 -
使用这些代码行:
- (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) } }