2012-07-12 1 views
5

私はいくつかのプレースホルダーテキストを持つUITextfieldを持っています。プレースホルダーテキストとUITextFieldで整列していないテキストで入力されました

私は両方の配置プロパティを使用しました。しかし、palceholderのテキストはまだ少し上です。誰か助けてくれますか?

ありがとうございました。

+0

あなたが使用している実際のコードを投稿することができますか? – Nosrettap

+0

Nosrettap:IBを使用して作成されます。 – Ahsan

+0

私はまだこの問題を抱えています。あなたは修正を見つけたことがありますか? :/ –

答えて

0

UITextField文書によれば、textAlignmentプロパティを使用する必要があります。ドキュメントの状態として "このプロパティは、メインテキスト文字列とプレースホルダ文字列の両方に適用されます。このプロパティの既定値はUITextAlignmentLeftです。"

だからあなたのコードは次のようになります。

textfield.textAlignment = UITextAlignmentLeft 

またはあなたが=記号の後UITextAlignmentCenterまたはUITextAlignmentRightを使用することができ、テキストを整列する方法に応じて。

+0

これは役に立ちません。それは、入力されたテキストが整列されているか、プレースホルダーのテキストが整列されている(中央の垂直整列)かのようです。なぜこれら2つのテキストが両方とも正しく整列していないのか分かりません – Ahsan

0

あなたのYサイズで遊んでいたら、CGRectMakeを使ってフレームを作成しました。多分それを小さくするでしょうか?

3
textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; 
1

ここでは、プレースホルダとテキストの位置合わせを修正する必要があるため、MonoTouchの私のソリューションです。コメントに書いてあるとおり、編集、静的テキスト、および静的プレースホルダという3つの異なる部分があります。 Objective-Cに相当するのはです。drawTextInRect:drawPlaceholderInRect:です。

私の解決策は、誤整列アイテムをサブクラス化してオフセットすることでした。残念ながら、この問題は、フォントファイル自体と、編集モードがそれにどのように影響するか、iOSが静的テキストをレンダリングする方法と関連しているようです。

これは誰かを助けることを望みます。

アリソン

public class MyTextField : UITextField 
{ 
    public MyTextField(RectangleF rect) : base(rect) 
    { 
    } 

    public override void DrawPlaceholder(RectangleF rect) 
    { 
     base.DrawPlaceholder(new RectangleF(rect.X, rect.Y + 2, rect.Width, rect.Height)); 
    } 

    public override void DrawText(RectangleF rect) 
    { 
     base.DrawText(new RectangleF(rect.X, rect.Y + 2, rect.Width, rect.Height)); 
    } 
} 
関連する問題