【问题标题】:Add label to UITextField向 UITextField 添加标签
【发布时间】:2009-04-13 21:18:38
【问题描述】:

在问题663830 中,Isaac 询问有关向文本字段添加按钮的问题。有人可以显示代码以向 .rightView 属性添加标签吗?

或者,有没有更好的方法在文本字段中包含“永久”文本?

这适用于在字段中包含单位(mg、kg 等)的计算器,而无需在文本字段之外维护标签。有点像永久占位符文本?

谢谢, 克里斯

【问题讨论】:

    标签: iphone


    【解决方案1】:

    快速而肮脏的代码:

    - (void)viewDidLoad {
        [super viewDidLoad];
        UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(100, 100, 100, 40)];
        textField.borderStyle = UITextBorderStyleLine;
        UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 40, 40)];
        label.text = @"mg";
        label.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.0];
        textField.rightViewMode = UITextFieldViewModeAlways;
        textField.rightView = label;
        [self.view addSubview:textField];
        [label release];
        [textField release];
    }
    

    请注意,我是从 ViewController 添加子视图,您也可以从视图中添加。

    【讨论】:

    • @Johannes 为矩形、颜色等提供了很多硬编码值。此外,我不确定我是否会在视图控制器上执行此操作,这对我来说似乎是视图逻辑,而不是控制器逻辑.
    【解决方案2】:

    UITextField 上的 leftView(或 rightView)属性是这个的钱。在文本字段中制作“永久”文本非常容易。

    - (void)loadView
    {
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 40, 40)];
    label.text = @"To:";
    label.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.0];
    self.UITextField.leftViewMode = UITextFieldViewModeAlways;
    self.UITextField.leftView = label;
    }
    

    【讨论】:

      【解决方案3】:

      我知道我参加聚会可能会迟到一点,但我相信这可以帮助未来面临同样情况的程序员。

      您可能想要创建一个类别以使其更易于在多个应用程序中使用,如下所示:

      UITextField+PaddingLabel.h

      #import <UIKit/UIKit.h>
      
      @interface UITextField (PaddingLabel)
      
      -(void) setLeftPaddingText:(NSString*) paddingValue width:(CGFloat) width;
      
      -(void) setRightPaddingText:(NSString*) paddingValue width:(CGFloat) width;
      
      @end
      

      UITextField+PaddingLabel.m

      #import "UITextField+PaddingLabel.h"
      
      @implementation UITextField (PaddingLabel)
      
      -(void) setLeftPaddingText:(NSString*) paddingValue width:(CGFloat) width
      {
          UILabel *paddingLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, width, self.frame.size.height)];
          paddingLabel.text = paddingValue;
          self.leftView = paddingLabel;
          self.leftViewMode = UITextFieldViewModeAlways;
      }
      
      -(void) setRightPaddingText:(NSString*) paddingValue width:(CGFloat) width
      {
          UILabel *paddingLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, width, self.frame.size.height)];
          paddingLabel.text = paddingValue;
          self.rightView = paddingLabel;
          self.rightViewMode = UITextFieldViewModeAlways;
      }
      
      @end
      

      用法示例:

      [self.dateTextField setLeftPaddingText:@"DATE:" width:defaultWidth];
      

      【讨论】:

        猜你喜欢
        • 2014-04-15
        • 2014-06-22
        • 2018-10-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多