iOS开发笔录iOS 开发每天分享优质文章iOS学习笔记

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];
            }
        }
    }
}
上一篇下一篇

猜你喜欢

热点阅读