UITextFieldの文字の入力位置を調整する方法です。
UITextFieldを継承したクラスを作り、次のメソッドをオーバーライドします。
- (CGRect)textRectForBounds:(CGRect)bounds; - (CGRect)editingRectForBounds:(CGRect)bounds;
textRectForBounds:が返す値は、表示されるテキスト、およびプレースホルダのテキスト表示位置です。
editingRectForBounds:が返す値は、編集中のテキストの表示位置です。
一文字くらいインデントしたテキストフィールドを作るには次のようにします。
#import <UIKit/UIKit.h> #import "MyTextField.h" @interface MyTextField : UITextField @end @implementation MyTextField - (void)drawRect:(CGRect)rect { [super drawRect:rect]; } - (void)dealloc { [super dealloc]; } - (CGRect)textRectForBounds:(CGRect)bounds { return CGRectMake(bounds.origin.x + 16.0f, bounds.origin.y, bounds.size.width, bounds.size.height); } - (CGRect)editingRectForBounds:(CGRect)bounds { return CGRectMake(bounds.origin.x + 16.0f, bounds.origin.y, bounds.size.width, bounds.size.height); } @end