【问题标题】:How to set UILabel's value according to UITextField as it is typed in iPhone?如何根据在 iPhone 中输入的 UITextField 设置 UILabel 的值?
【发布时间】:2012-08-10 09:55:22
【问题描述】:

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

请分享建议。

提前致谢

【问题讨论】:

  • 你有文字限制吗????意味着在 UILabel 的情况下,你将不得不增加它的大小......如果你向我展示你的那个视图的 UI 会更好......

标签: iphone objective-c uitextfield uilabel


【解决方案1】:

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

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


-(void)enterInLabel 
{ 
    selectedLabel.text=selectedTextField.text;
}

【讨论】:

    【解决方案2】:

    正如@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;
    

    【讨论】:

      【解决方案3】:

      设置您的 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

      【讨论】:

      • 这个方法我已经试过了。但这晚输入 1 个字符。我的意思是当用户必须输入 SAMPLE 并且他开始输入 S 时它仍然是空白然后他输入 A 它在标签中打印 S 并且他输入 M 然后它在标签中打印 A 等等。我需要在标签中即时打印
      【解决方案4】:

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

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

      【讨论】:

      • 我知道委托方法。如果您知道任何示例代码,请提供
      • 这是错误的投票...他已经说过他不知道语法...但是他给出了正确的方法...您可以使用其代表方法处理 textField 事件....
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-10
      • 2011-11-14
      • 1970-01-01
      • 2021-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多