iPhone如何在输入时获取UITextField的文本?
我试图在单独的UILabel
上显示对UITextField
所做的更改。在用户输入每个字符后,是否有方法可以捕获UITextField
的全文?目前我正在使用这种方法,但它不捕获用户输入的最后一个字符。iPhone如何在输入时获取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;
}
我如何可以采取文字出来的UITextField的每个字符之后输入?
谢谢!
- 首先添加一个
UITextField
和UILabel
到情节提要/笔尖 - 现在分配
IBOutlet
为UILabel
(这里我用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]; }
希望这有助于。
Hummmmm那是很不错的THX。 ..... :) – 2015-04-24 06:48:33
它适用于我.... – 2015-10-06 11:55:05
如果我逐个删除字符。这种方法不打电话 – 2017-03-31 07:00:09
简单处理“的编辑更改”事件的
[textField addTarget:self
action:@selector(editingChanged:)
forControlEvents:UIControlEventEditingChanged];
和选择:
-(void) editingChanged:(id)sender {
// your code
}
您可以手动执行此操作,或按CTRL-拖动故事板“编辑而改变”已发送事件给你的.h,为你创建editingChanged方法。
在斯威夫特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斯威夫特2.0+
titleTextField.addTarget(self, action: #selector(textFieldTyping), forControlEvents: .EditingChanged)
并实行selector
func textFieldTyping(textField:UITextField)
{
//Typing
}
在雨燕3.0:
一些解决方案的背后都是一个字符,或更早版本雨燕的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)
}
}
斯威夫特3.0+:这个工作非常漂亮,对我来说。
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
self.yourLabel.text = "\(textField.text ?? "")\(string)"
return true
}
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if textField == yourTextFieldOutletName
{
if yourTextFieldOutletName.isEmpty == false
{
youtlabelname.text = yourTextFieldOutletName.text!
}
}
return true
}
func textViewDidEndEditing(_ textView: UITextView) {
if textField == yourTextFieldOutletName
{
if yourTextFieldOutletName.isEmpty == false
{
youtlabelname.text = yourTextFieldOutletName.text!
}
}
}
退房:http://*.com/questions/388237/getting-the-value-of-a-uitextfield-as-keystrokes-are-entered – hanumanDev 2012-04-28 13:23:09