国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > iOS > 正文

使用UITextField限制只可輸入中,英文,數(shù)字的方法

2020-07-26 03:11:55
字體:
供稿:網(wǎng)友

前言

本文主要介紹使用UITextField限制只可輸入中,英文,數(shù)字,我們可以使用NSPredicate正則表達(dá)式可以過濾,下面看看詳細(xì)的步驟方法

首先設(shè)置UItextField的代理

實(shí)現(xiàn)如下方法:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ if ([self isInputRuleAndNumber:string] || [string isEqualToString:@""]) {  return YES; } return NO;}

然后添加事件,因?yàn)檫x擇輸入法聯(lián)想的詞.是不會(huì)經(jīng)過textField:shouldChangeCharactersInRange:replacementString:方法的

 [textField addTarget:self action:@selector(textFieldChanged:) forControlEvents:UIControlEventEditingChanged];

實(shí)現(xiàn):

- (void)textFieldChanged:(UITextField *)textField { NSString *toBeString = textField.text; NSString *lastString; if(toBeString.length>0)  lastString=[toBeString substringFromIndex:toBeString.length-1]; if (![self isInputRuleAndNumber:toBeString]&&[self hasEmoji:lastString]) {  textField.text = [self disable_emoji:toBeString];  return; } NSString *lang = [[textField textInputMode] primaryLanguage]; if([lang isEqualToString:@"zh-Hans"]) {  UITextRange *selectedRange = [textField markedTextRange];  UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];  if(!position) {   NSString *getStr = [self getSubString:toBeString];   if(getStr && getStr.length > 0) {    textField.text = getStr;   }  } } else{  NSString *getStr = [self getSubString:toBeString];  if(getStr && getStr.length > 0) {   textField.text= getStr;  } }}

再來實(shí)現(xiàn)限制:

pattern中,輸入需要驗(yàn)證的通過的字符

     小寫a-z

     大寫A-Z

     漢字/u4E00-/u9FA5

     數(shù)字/u0030-/u0039

- (BOOL)isInputRuleAndNumber:(NSString *)str { NSString *pattern = @"[a-zA-Z/u4E00-/u9FA5//u0030-//u0039]"; NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern]; BOOL isMatch = [pred evaluateWithObject:str]; return isMatch;}

實(shí)現(xiàn)判斷是否是Emoji

- (BOOL)hasEmoji:(NSString*)str{ NSString *pattern = @"[^//u0020-//u007E//u00A0-//u00BE//u2E80-//uA4CF//uF900-//uFAFF//uFE30-//uFE4F//uFF00-//uFFEF//u0080-//u009F//u2000-//u201f/r/n]"; NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern]; BOOL isMatch = [pred evaluateWithObject:str]; return isMatch;}

字符限制

#define kMaxLength 20;-(NSString *)getSubString:(NSString*)string{ NSStringEncoding encoding = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000); NSData* data = [string dataUsingEncoding:encoding]; NSInteger length = [data length]; if (length > kMaxLength) {  NSData *data1 = [data subdataWithRange:NSMakeRange(0, kMaxLength)];  NSString *content = [[NSString alloc] initWithData:data1 encoding:encoding];  if (!content || content.length == 0) {   data1 = [data subdataWithRange:NSMakeRange(0, kMaxLength - 1)];   content = [[NSString alloc] initWithData:data1 encoding:encoding];  }  return content; } return nil;}

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望能對(duì)大家的學(xué)習(xí)或者工作帶來一定的幫助,如果有疑問大家可以留言交流。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 翁牛特旗| 贡觉县| 永泰县| 东宁县| 乌恰县| 晋中市| 楚雄市| 无为县| 宾川县| 余江县| 东明县| 德昌县| 嵩明县| 合作市| 江陵县| 崇州市| 珲春市| 道孚县| 恩平市| 黄梅县| 夏河县| 芜湖市| 泽库县| 额尔古纳市| 运城市| 郁南县| 苗栗县| 柯坪县| 尼木县| 社会| 长沙县| 仁布县| 湖北省| 刚察县| 大足县| 清新县| 五莲县| 湟源县| 东丰县| 周口市| 迭部县|