iOS Textfield内边距,textfield限制输入字符
2017-07-04 本文已影响98人
錒伟
在iOS 开发中textfield也是很常用的一个控件, 登录必有.给大家分享一些经常会纠结的
一. Textfield内边距 , /限制输入字符
如果你的textfield前面没有需求要放图片,如下:
阿伟.png那你完全可以把图中图片位置当做内边距,放一个空的View就OK 了
UITextField * detailText;
detailText = [[UITextField alloc]init];
//设置圆角
detailText.layer.cornerRadius = 5;
detailText.layer.masksToBounds = YES;
//创建手机图标
UIImageView * Phone = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 13, 19)];
Phone.image = [UIImage imageNamed:@"Phone"];//放图标的情况下,如果不放phone删掉
detailText.leftView = Phone;
// 设置左边的view永远显示
detailText.leftViewMode = UITextFieldViewModeAlways;
/*
*如果即要图标也有内边距
*/
[detailText setValue:[NSNumber numberWithInt:10] forKey:@"paddingLeft"];
/*
*限制输入字符
*这个需求如果用textfieldDelegate来做的话, 当用户输入到你限制的字符数量之后,想回删可能就回删不了. 如果自己添加监听也比较麻烦. iOS textfield提供了
*/
[detailText addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
只需要把这个方法实现判断:
-(void)textFieldDidChange:(UITextField *)textField
{
CGFloat maxLength = 11;
NSString *toBeString = textField.text;
//获取高亮部分
UITextRange *selectedRange = [textField markedTextRange];
UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];
if (!position || !selectedRange)
{
if (toBeString.length > maxLength)
{
NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:maxLength];
if (rangeIndex.length == 1)
{
textField.text = [toBeString substringToIndex:maxLength];
}
else
{
NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, maxLength)];
textField.text = [toBeString substringWithRange:rangeRange];
}
}
}
}