修改UITextField光标位置的三个方法
1.既修改了光标起始位置,同时也修改了文本起始位置,并且文字不会在超出文本框时,被挤到文本边框处。建议给textField添加一个leftView和rightView这个方式:
CGRect frame = self.textField.frame;
frame.size.width = 10;// 距离左侧的距离
UIView *leftview = [[UIView alloc] initWithFrame:frame];
self.textField.leftView = leftview;
self.textField.leftViewMode = UITextFieldViewModeAlways;
CGRect frame1 = self.textField.frame;
frame1.size.width = 10;// 距离右侧的距离
frame1.origin.x = frame1.size.width - 10;
UIView *rightView = [[UIView alloc] initWithFrame:frame1];
self.textField.rightView = rightView;
self.textField.rightViewMode = UITextFieldViewModeAlways;
1.2 可以同时修改光标和文本位置,但是除了设置paddingLeft有用之外,其它几个方向上的会失败,而且超出输入范围之后,要么起始位置改变,要么文本不会主动左移显示最后输入的文本(不建议使用)
[self.textField setValue:[NSNumber numberWithInt:10] forKey:@"paddingLeft"];
1.3 新建一个textField,重载以下方法
//未编辑状态下的起始位置
- (CGRect)textRectForBounds:(CGRect)bounds {
return CGRectInset(bounds, 5, 0);
}
// 编辑状态下的起始位置
- (CGRect)editingRectForBounds:(CGRect)bounds {
return CGRectInset(bounds, 5, 0);
}
//placeholder起始位置
- (CGRect)placeholderRectForBounds:(CGRect)bounds {
return CGRectInset(bounds, 5, 0);
}
网友评论