iOS UITextfield进一步解析

光标

1. 设置光标颜色
self.textfield.tintColor = [UIColor redColor];

2. 设置光标位置
第一种方法是:设置 leftView ,使得 leftView 填充左间距的位置
CGFloat marginToLeft = 10.f;

UIView *leftView            = [[UIView alloc] init];
leftView.frame              = CGRectMake(0, 0, marginToLeft, 0);
self.textfield.leftView     = leftView;
self.textfield.leftViewMode = UITextFieldViewModeAlways;

第二种方法是:重写 UITextfield 里面的方法
#import "UITextField+CursorPosition.h"

CGFloat marginToLeft = 10.f;

@implementation UITextField (CursorPosition)

// 控制编辑文本的位置
- (CGRect)editingRectForBounds:(CGRect)bounds
{
    return CGRectMake(bounds.origin.x + marginToLeft, bounds.origin.y, bounds.size.width - marginToLeft, bounds.size.height);
}

// 控制显示文本的位置
- (CGRect)textRectForBounds:(CGRect)bounds
{
    return CGRectMake(bounds.origin.x + marginToLeft, bounds.origin.y, bounds.size.width - marginToLeft, bounds.size.height);
}

@end

占位符

[self.textfield setValue:[UIColor cyanColor] forKeyPath:@"_placeholderLabel.textColor"];
[self.textfield setValue:[UIFont systemFontOfSize:17] forKeyPath:@"_placeholderLabel.font"];

代理

关于 UITextFieldDelegate 的代理方法

// 开始编辑之前,判断是否允许开始编辑
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
    return YES;
}

// 开始编辑,成为第一响应者
- (void)textFieldDidBeginEditing:(UITextField *)textField
{

}

// 结束编辑之前,判断是否允许结束编辑
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
    [textField resignFirstResponder];
    return YES;
}

// 结束编辑,失去第一响应者
- (void)textFieldDidEndEditing:(UITextField *)textField
{

}

// 替换某些范围的文字
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    // 此处可以用来限制 textField 的内容长度
    return YES;
}

// 清空按钮被点击之前,判断是否允许清空
- (BOOL)textFieldShouldClear:(UITextField *)textField
{
    return YES;
}

// 'return'键被点击之前,判断是否允许执行
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    return YES;
}

通知

UIKIT_EXTERN NSString *const UITextFieldTextDidBeginEditingNotification;
UIKIT_EXTERN NSString *const UITextFieldTextDidEndEditingNotification;
UIKIT_EXTERN NSString *const UITextFieldTextDidChangeNotification;

参考资料

自定义UITextView
UITextField的总结
iOS中UITextField 使用全面解析

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值