0

UITextFieldのプレースホルダーとテキストのインデントが異なるのはなぜですか?プレースホルダーのテキストが数ピクセル右にシフトしているようです。このインデントを削除するにはどうすればよいですか?テキストフィールドはIBで作成されました。 ここに画像の説明を入力してください

4

3 に答える 3

3

ここでは何の違いもありません!! ここに画像の説明を入力してください

移動には

- (CGRect)textRectForBounds:(CGRect)bounds;
- (CGRect)placeholderRectForBounds:(CGRect)bounds;
于 2013-03-06T09:43:48.427 に答える
1

これらの2つのメソッドをオーバーライドして、必要なrectを作成できます。はい、どうぞ :

- (CGRect)textRectForBounds:(CGRect)bounds;
- (CGRect)placeholderRectForBounds:(CGRect)bounds;

リンクはこちら

Appleが言ったように:

**placeholderRectForBounds:**
Returns the drawing rectangle for the text field’s placeholder text

    - (CGRect)placeholderRectForBounds:(CGRect)bounds
    Parameters
    bounds
    The bounding rectangle of the receiver.
    Return Value
    The computed drawing rectangle for the placeholder text.

    Discussion
    You should not call this method directly. If you want to customize the drawing rectangle for the placeholder text, you can override this method and return a different rectangle.

    If the placeholder string is empty or nil, this method is not called.



**textRectForBounds:**
Returns the drawing rectangle for the text field’s text.

- (CGRect)textRectForBounds:(CGRect)bounds
Parameters
bounds
The bounding rectangle of the receiver.
Return Value
The computed drawing rectangle for the label’s text.

Discussion
You should not call this method directly. If you want to customize the drawing rectangle for the text, you can override this method and return a different rectangle.

The default implementation of this method returns a rectangle that is derived from the control’s original bounds, but which does not include the area occupied by the receiver’s border or overlay views.
于 2013-03-06T09:40:05.917 に答える
0

私はこの振る舞いの理由を見つけました。iOS5.0のバグのようです。新しいプロジェクトを作成し、UITextFieldsを画面に配置すると、プレースホルダーは同じように動作します。しかし、プラットフォームを5.0から6.1に変更すると、機能しました。プレースホルダーはテキストからシフトされなくなりました。だから私はそれがiOS5.0のバグだと思う。答えてくれてありがとう!

于 2013-03-06T10:23:00.497 に答える