IOS textField 输入个数限制

来源:互联网 发布:nike安卓抢鞋软件 编辑:程序博客网 时间:2024/05/22 12:05

一.问题描述:当我们对textFiled输入的字数进行限制的时候比如 textField.text.length<10 ,对于这个限制当我们用第三方的键盘无论是搜狗还是百度都是没有问题的,但是当我们用IOS系统自带的键盘输入汉字的时候当输完9个汉字之后你再用拼音拼第十个汉字的时候就会发现这样一个问题:第十个汉字你只能用拼音拼出第一个拼音然后就无法继续拼写下去了。用一下方法可以解决这个问题。

在viewdidLoad 里面先加入通知

 [[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(textFiledEditChanged:)

                                                name:@"UITextFieldTextDidChangeNotification"object:self.aliasTextField];

 



-(void)textFiledEditChanged:(NSNotification *)obj{

    

    NSInteger maxCount = 20;

      UITextField *textField = (UITextField *)obj.object;

    

    NSString *toBeString = textField.text;

    //    NSString *lang = [[UITextInputMode currentInputMode] primaryLanguage]; //键盘输入模式

    NSString *lang = [textField.textInputModeprimaryLanguage];

    if ([langisEqualToString:@"zh-Hans"]) {// 简体中文输入,包括简体拼音,健体五笔,简体手写

        UITextRange *selectedRange = [textFieldmarkedTextRange];

        //获取高亮部分

        UITextPosition *position = [textField positionFromPosition:selectedRange.startoffset:0];

        // 没有高亮选择的字,则对已输入的文字进行字数统计和限制

        if (!position) {

            if (toBeString.length > maxCount) {

                textField.text = [toBeString substringToIndex:maxCount];

            }

        }

        // 有高亮选择的字符串,则暂不对文字进行统计和限制

        else{

            

        }

    }

    // 中文输入法以外的直接对其统计限制即可,不考虑其他语种情况

    else{

        if (toBeString.length > maxCount) {

            textField.text = [toBeString substringToIndex:maxCount];

        }

    }

}

二.问题描述:输入框内的文字都是需要提交到服务器的,有时候我们会遇到不接受表情符号的接口 这个时候如果输入框里面有表情符号我们就需要把表情过滤掉或者装换成其他一些符号或者字符串让后台可以接受。


+ (NSString *)disable_emoji:(NSString *)string

{

    NSRegularExpression *regex = [NSRegularExpressionregularExpressionWithPattern:@"[^\\u0020-\\u007E\\u00A0-\\u00BE\\u2E80-\\uA4CF\\uF900-\\uFAFF\\uFE30-\\uFE4F\\uFF00-\\uFFEF\\u0080-\\u009F\\u2000-\\u201f\r\n]"options:NSRegularExpressionCaseInsensitiveerror:nil];

    NSString *str = [regexstringByReplacingMatchesInString:stringoptions:0range:NSMakeRange(0, [stringlength]) withTemplate:@"[表情]"];

    return str;

}

这个函数将所有的Emoji转换为字符串@"[表情]"


三. 相信做过IOS开发的都应该做过登录注册界面,一下是我对登录注册做的一些总结

    1.第一不可少的就是点击屏幕空白处会收起键盘。可以再touchesBegin函数  或者 自己写个手势函数里面写上

    [self.viewendEditing:YES];

    2.输入框里面字符串的限制比如注册的时候输入的电话号码最好能做几个限制比如 输入的第一个字符必须是1不超过11位 在第三位与第四位之间留有空格 在第七位与第八位之间留有空        格,密码输入框一定设置成保密属性。

    3.还有一些其他的美化界面的设置,比如正在输入的输入框边框高亮,或者不同的输入框对应不同类型的键盘,等等。

    4.做登录最重要的一点就是登录成功之后做用户数据的本地存储以及退出登录把用户数据清除干净。

个人觉得登录注册不难做但是需要处理的细节还是挺多的。一般如果是一个新应用都是首先弹出注册界面可以从注册界面跳进登录的界面,但是拥有一定用户量的app基本是是先看到登录界面注册界面可以由登录界面进入这样子的。

另外 一个app 像注册登录 这种最基本的界面 做好之后是没有必要大改的。

     






0 0
原创粉丝点击