我想根据输入的UITextField设置UILabel。我的意思是如果用户想要输入SAMPLE并且他开始输入S然后标签应该设置为S,那么他键入A标签也应该是A,依此类推。怎么做到这一点?
请分享建议。
提前致谢
答案 0 :(得分:4)
最简单的方法是创建一个方法并将其与UiTextfield连接,使用事件UIControlEventEditingChanged
,它将为您提供在文本字段中输入的每个字符的跟踪。
[self.selectedTextField addTarget:self action:@selector(enterInLabel ) forControlEvents:UIControlEventEditingChanged];
-(void)enterInLabel
{
selectedLabel.text=selectedTextField.text;
}
答案 1 :(得分:0)
代表也为此工作,正如@brain所说。 shouldChangeCharactersInRange:
方法可能有点令人困惑,但我认为以下内容非常简单。
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
// myTextField delegate has been set
if ([textField isEqual:myTextField]){
NSMutableString *txt = [NSMutableString stringWithString:textField.text];
[txt replaceCharactersInRange:range withString:string]; //this is essentially how the textfield is updated after YES is returned
previewLabel.text = txt;
}
return YES;
}
文本字段的更改实际上是在返回YES之后完成的。这就是这个代表的全部观点。举个例子,如果你想将文本字段限制为3个字符,你可以执行以下操作来阻止文本字段“替换”文本。
if (range.location > 3)
return NO;
答案 2 :(得分:-1)
设置textField
委托,然后在viewController.m
文件中调用其方法..就像这样 -
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
mylabel.text = [textField.text stringByReplacingCharactersInRange:range withString:string];
return YES;
}
这将在每次增加字符后更改文本。
或者您可以在TextField上添加操作 请参阅此链接 - UiTextField events
答案 3 :(得分:-2)
您的视图控制器需要实现UITextFieldDelegate,这将允许它接收对文本字段的更改。在委托的适当方法中,您需要设置UILabel的文本。
我从未使用过UITextFieldDelegate,因此无法提供有关如何使用它的更多详细信息。我会模拟一个快速示例,只是NSLog或调试委托调用,看看你得到的调用。