我想根据输入的 UITextField 设置 UILabel 。我的意思是如果用户想输入 SAMPLE 并且他开始输入 S 那么标签应该设置为 S,那么他输入的标签也应该是 A 等等。如何做到这一点?
请分享建议。
提前致谢
我想根据输入的 UITextField 设置 UILabel 。我的意思是如果用户想输入 SAMPLE 并且他开始输入 S 那么标签应该设置为 S,那么他输入的标签也应该是 A 等等。如何做到这一点?
请分享建议。
提前致谢
最简单的方法是创建一个方法并将其与带有事件的 UiTextfield 连接起来,UIControlEventEditingChanged
这将为您提供在文本字段中输入的每个字符的跟踪。
[self.selectedTextField addTarget:self action:@selector(enterInLabel ) forControlEvents:UIControlEventEditingChanged];
-(void)enterInLabel
{
selectedLabel.text=selectedTextField.text;
}
正如@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;
设置你的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 事件
您的视图控制器将需要实现UITextFieldDelegate,这将允许它接收对文本字段的更改。在委托的适当方法中,您需要设置 UILabel 的文本。
我从未使用过 UITextFieldDelegate,因此无法提供有关如何使用它的更多详细信息。我会模拟一个简单的示例,然后只使用 NSLog 或调试委托调用以查看您获得的调用。