如何根据UITextField设置UILabel的值,因为它在iPhone中输入?

时间:2012-08-10 09:55:22

标签: iphone objective-c uitextfield uilabel

我想根据输入的UITextField设置UILabel。我的意思是如果用户想要输入SAMPLE并且他开始输入S然后标签应该设置为S,那么他键入A标签也应该是A,依此类推。怎么做到这一点?

请分享建议。

提前致谢

4 个答案:

答案 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或调试委托调用,看看你得到的调用。