iOS开发问题----去掉输入键盘上的自动联想部分,限制长度内容,以及禁止输入emoji表情等问题

     在开发的时候往往会用到一些控件来显示文本,而且这些文本有得需要可以被编辑,于是承载文本的载体多为UITextField,或者UITextView等。一般涉及到的问题是,有的时候会需要限制文本,对输入的内容进行校验,或者长度限制。这里罗列一些处理问题的办法。


1.当输入的信息只允许是数字或者字母的时候,自动联想的文本可以不点击进去,而这些文本有的时候不见得是我们希望出现的。所以,解决办法可以采用直接去掉自动联想功能。代码为:

textField.autocorrectionType = UITextAutocorrectionTypeNo;

textView.autocorrectionType = UITextAutocorrectionTypeNo;


2.1 限定某些特定的输入文本时,可以采用的方法是:

#define kAlphaNum @"X0123456789"


 NSCharacterSet *cs;

        

        cs = [[NSCharacterSetcharacterSetWithCharactersInString:kAlphaNum]invertedSet];


        NSString *filtered = [[stringcomponentsSeparatedByCharactersInSet:cs]componentsJoinedByString:@""];//cs分离出数组,数组按@""分离出字符串



        BOOL canChange = [stringisEqualToString:filtered];

        return canChange;


2.2 由于在限制输入字符的时候有许多的需求,比如输入汉字,当在拼写的时候在邻近限制长度的时候,拼音一旦超过长度,就无法精确地将想要的汉字输入到最后限制位,针对这样的问题解决办法如下:注:textView同样同样适用与这个方法,不过并不是给textView添加触发事件而是添加监听,即NSUserDefault

1.给textField添加触发事件

 [_hNewMsgTextField addTarget:self action:@selector(textChanged:)forControlEvents:UIControlEventEditingChanged];


2.完成方法

-(void)textChanged:(UITextField *)textField{

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

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

            UITextRange *selectedRange = [textField markedTextRange];

            //获取高亮部分

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

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

            if (!position) {

                if (textField.text.length >11) {

                    textField.text = [textField.text substringToIndex:11];

                }

            }

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

            else{

                

            }

        }

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

        else{

            if (textField.text.length >11) {

                textField.text = [textField.text substringToIndex:11];

            }

        }

    }

}



3.禁止输入苹果键盘自带的emoji表情

   if ([[[UITextInputModecurrentInputMode]primaryLanguage]         isEqualToString:@"emoji"]) {

                returnNO;

        }

            



  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值