3

左側にプレースホルダー、右側に編集済みテキストを持つ UITextField を作成する方法は?

テキストフィールド画像

UITextField 自体では、そのプロパティを使用してプレースホルダーと編集済みテキストを別の側に配置することはできません。ストーリーボード -> 属性インスペクター -> 配置で設定してみてください。それらは両方とも左または両方右にあります。プレースホルダーのみ、またはテキストのみの特別な配置はありません。

4

4 に答える 4

5

まず、テキストの配置を右に設定します。

    [textField setTextAlignment:NSTextAlignmentRight];

プレースホルダーをサブビューとして追加するか、次のleftViewプロパティを使用できます。

    [textField setLeftView:<your label here>];
于 2013-09-11T08:15:18.223 に答える
1

これを行うカスタム UITextField サブクラスを作成しました。これを使用するには、ストーリーボードまたは Xib に UITextField を作成するだけです...そこにプレースホルダー テキストを配置し、テキスト フィールド クラスを OBSTextFieldWithLabel として設定すると、次のコードを使用できます。

@interface OBSTextFieldWithLabel : UITextField
@end

@implementation OBSTextFieldWithLabel
  - (void)awakeFromNib
  {
    [super awakeFromNib];

    NSString *labelText = [self placeholder];
    self.placeholder = nil;
    CGRect labelFrame = CGRectMake(20, 10, 150, 15);
    UILabel *placeholderLabel = [[UILabel alloc] initWithFrame:labelFrame];
    [placeholderLabel setFont:[UIFont systemFontOfSize:12]];
    [placeholderLabel setTextColor:[UIColor lightGrayColor]];
    [placeholderLabel setText:labelText];
    [self addSubview:placeholderLabel];
    [self setTextAlignment:NSTextAlignmentRight];
  }
@end

ラベルのサイズは動的に設定されていないため、これはおそらく 100% 完璧ではありません...しかし、起動して実行する必要があり、動作するはずです :-)

于 2014-01-21T16:26:42.473 に答える
0

私はあなたを助けるかもしれないコントロールを書きました。基本的に、編集中に UITextField を強調表示することを目的としていますが、スクリーンショットでわかるように、左側にプレースホルダーのメカニズムもあります。

https://www.cocoacontrols.com/controls/sahighlightedtextfield

これがあなたを正しい方向に向けることを願っています。

于 2013-09-11T08:16:41.670 に答える