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

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

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

2019-10-21 18:52:05
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

前言

本文主要介紹使用UITextField限制只可輸入中,英文,數(shù)字,我們可以使用NSPredicate正則表達(dá)式可以過(guò)濾,下面看看詳細(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)過(guò)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;  } }}

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

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

     小寫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é)

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


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到IOS開(kāi)發(fā)頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 银川市| 托克托县| 平安县| 西乌珠穆沁旗| 新绛县| 久治县| 高要市| 胶南市| 右玉县| 平阴县| 神农架林区| 肃宁县| 吴桥县| 长顺县| 文登市| 宁化县| 龙口市| 涿鹿县| 前郭尔| 汽车| 东方市| 赤峰市| 海南省| 楚雄市| 大城县| 大化| 西乡县| 迭部县| 靖州| 开阳县| 嘉禾县| 上杭县| 安阳县| 上栗县| 景泰县| 陆丰市| 南宫市| 桦甸市| 沁阳市| 九江市| 吉木乃县|