1

我想根据输入的 UITextField 设置 UILabel 。我的意思是如果用户想输入 SAMPLE 并且他开始输入 S 那么标签应该设置为 S,那么他输入的标签也应该是 A 等等。如何做到这一点?

请分享建议。

提前致谢

4

4 回答 4

4

最简单的方法是创建一个方法并将其与带有事件的 UiTextfield 连接起来,UIControlEventEditingChanged这将为您提供在文本字段中输入的每个字符的跟踪。

[self.selectedTextField addTarget:self action:@selector(enterInLabel ) forControlEvents:UIControlEventEditingChanged];


-(void)enterInLabel 
{ 
    selectedLabel.text=selectedTextField.text;
}
于 2012-08-10T10:26:54.480 回答
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;
于 2013-11-05T00:21:54.000 回答
-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 事件

于 2012-08-10T10:19:59.527 回答
-2

您的视图控制器将需要实现UITextFieldDelegate,这将允许它接收对文本字段的更改。在委托的适当方法中,您需要设置 UILabel 的文本。

我从未使用过 UITextFieldDelegate,因此无法提供有关如何使用它的更多详细信息。我会模拟一个简单的示例,然后只使用 NSLog 或调试委托调用以查看您获得的调用。

于 2012-08-10T10:00:59.760 回答