iOS 基礎(chǔ)篇--實(shí)際應(yīng)用中 UITextField輸入的限制

扯犢子的話就不說了,記錄一下項(xiàng)目中實(shí)際用到的一些限制輸入的運(yùn)用:

1:最常用的限制輸入長度;

//輸入框添加監(jiān)聽事件
[self.textFieldaddTarget:selfaction:@selector(textFieldChanged:)forControlEvents:UIControlEventEditingChanged];

//實(shí)現(xiàn)方法

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

????NSString *toBeString = textField.text;

????NSString *lang = [[UIApplication sharedApplication]textInputMode].primaryLanguage;

? ??if ([lang isEqualToString:@"zh-Hans"]) { //中文輸入

? ??????UITextRange *selectedRange = [textField markedTextRange];

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

? ??????if (!position) {// 沒有高亮選擇的字,則對已輸入的文字進(jìn)行字?jǐn)?shù)統(tǒng)計(jì)和限制

? ??????????if (toBeString.length > 15) {

? ??????????????textField.text = [toBeString substringToIndex:15];?

? ??????????????[textField resignFirstResponder];

? ? ? ? ? ? }

? ? ? ? }

? ? }else{

? ??????if (toBeString.length > 15) {

? ??????????textField.text = [toBeString substringToIndex:15];

? ? ? ? }

? ? }

}

2.限制空格的輸入

//禁止輸入空格

- (BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString*)string {

? ? NSString *tem = [[string componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]componentsJoinedByString:@""];

? ? if(![stringisEqualToString:tem]) {

? ? ? ? returnNO;

? ? }

? ? return YES;

}

3.限制表情的輸入

//UITextField代理方法
- (BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString*)string {

? ? // 不讓輸入表情

? ? if([textField isFirstResponder]) {

? ? ? ? if ([[[textField textInputMode] primaryLanguage] isEqualToString:@"emoji"] || ![[textField textInputMode] primaryLanguage]) {

? ? ? ? ? ? returnNO;

? ? ? ? }

? ? }

? ? //判斷鍵盤是不是九宮格鍵盤

? ? if([ZZClass isNineKeyBoard:string] ){

? ? ? ? returnYES;

? ? }else{

? ? ? ? if([ZZClass hasEmoji:string] || [ZZClass stringContainsEmoji:string]){

? ? ? ? ? ? returnNO;

? ? ? ? }

? ? }

? ? return YES;

}


以上三個(gè)判斷方法如下(我也是網(wǎng)上找到的,自己拿來用順便做個(gè)總結(jié))

/**

?*? 判斷字符串中是否存在emoji

?*@paramstring 字符串

?*@returnYES(含有表情)

?*/

+ (BOOL)stringContainsEmoji:(NSString*)string

{

? ? __block?BOOL?returnValue =NO;

? ? [string enumerateSubstringsInRange:NSMakeRange(0, [string length]) options:NSStringEnumerationByComposedCharacterSequences usingBlock:

?? ? ^(NSString*substring,NSRangesubstringRange,NSRangeenclosingRange,BOOL*stop) {

?? ? ? ? const?unichar hs = [substring characterAtIndex:0];

?? ? ? ? if(0xd800<= hs && hs <=0xdbff) {

?? ? ? ? ? ? if(substring.length>1) {

?? ? ? ? ? ? ? ? constunicharls = [substringcharacterAtIndex:1];

?? ? ? ? ? ? ? ? constintuc = ((hs -0xd800) *0x400) + (ls -0xdc00) +0x10000;

?? ? ? ? ? ? ? ? if(0x1d000<= uc && uc <=0x1f77f) {

?? ? ? ? ? ? ? ? ? ? returnValue =YES;

?? ? ? ? ? ? ? ? }

?? ? ? ? ? ? }

?? ? ? ? }elseif(substring.length>1) {

?? ? ? ? ? ? constunicharls = [substringcharacterAtIndex:1];

?? ? ? ? ? ? if(ls ==0x20e3) {

?? ? ? ? ? ? ? ? returnValue =YES;

?? ? ? ? ? ? }

?? ? ? ? }else{

?? ? ? ? ? ? if(0x2100<= hs && hs <=0x27ff) {

?? ? ? ? ? ? ? ? returnValue =YES;

?? ? ? ? ? ? }elseif(0x2B05<= hs && hs <=0x2b07) {

?? ? ? ? ? ? ? ? returnValue =YES;

?? ? ? ? ? ? }elseif(0x2934<= hs && hs <=0x2935) {

?? ? ? ? ? ? ? ? returnValue =YES;

?? ? ? ? ? ? }elseif(0x3297<= hs && hs <=0x3299) {

?? ? ? ? ? ? ? ? returnValue =YES;

?? ? ? ? ? ? }elseif(hs ==0xa9|| hs ==0xae|| hs ==0x303d|| hs ==0x3030|| hs ==0x2b55|| hs ==0x2b1c|| hs ==0x2b1b|| hs ==0x2b50) {

?? ? ? ? ? ? ? ? returnValue =YES;

?? ? ? ? ? ? }

?? ? ? ? }

?? ? }];

? ? returnreturnValue;

}

/**

?*? 判斷字符串中是否存在emoji 限制第三方鍵盤(常用的是搜狗鍵盤)的表情

?*@paramstring 字符串

?*@returnYES(含有表情)

?*/

+ (BOOL)hasEmoji:(NSString*)string {

? ? NSString *pattern = @"[^\\u0020-\\u007E\\u00A0-\\u00BE\\u2E80-\\uA4CF\\uF900-\\uFAFF\\uFE30-\\uFE4F\\uFF00-\\uFFEF\\u0080-\\u009F\\u2000-\\u201f\r\n]";

? ? NSPredicate*pred = [NSPredicatepredicateWithFormat:@"SELF MATCHES %@", pattern];

? ? BOOLisMatch = [predevaluateWithObject:string];

? ? returnisMatch;

}

/**

?判斷是不是九宮格

?@paramstring? 輸入的字符

?@returnYES(是九宮格拼音鍵盤)

?*/

+ (BOOL)isNineKeyBoard:(NSString*)string

{

? ? NSString*other =@"????????";

? ? intlen = (int)string.length;

? ? for(inti=0;i

? ? {

? ? ? ? if(!([otherrangeOfString:string].location!=NSNotFound))

? ? ? ? ? ? returnNO;

? ? }

? ? return YES;

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末硝枉,一起剝皮案震驚了整個(gè)濱河市历极,隨后出現(xiàn)的幾起案子澎嚣,更是在濱河造成了極大的恐慌蓬网,老刑警劉巖瘸味,帶你破解...
    沈念sama閱讀 222,729評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件切端,死亡現(xiàn)場離奇詭異型将,居然都是意外死亡寂祥,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評論 3 399
  • 文/潘曉璐 我一進(jìn)店門七兜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來丸凭,“玉大人,你說我怎么就攤上這事腕铸∠” “怎么了?”我有些...
    開封第一講書人閱讀 169,461評論 0 362
  • 文/不壞的土叔 我叫張陵狠裹,是天一觀的道長虽界。 經(jīng)常有香客問我,道長涛菠,這世上最難降的妖魔是什么莉御? 我笑而不...
    開封第一講書人閱讀 60,135評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮俗冻,結(jié)果婚禮上礁叔,老公的妹妹穿的比我還像新娘。我一直安慰自己迄薄,他們只是感情好琅关,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著噪奄,像睡著了一般死姚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上勤篮,一...
    開封第一講書人閱讀 52,736評論 1 312
  • 那天,我揣著相機(jī)與錄音色罚,去河邊找鬼碰缔。 笑死,一個(gè)胖子當(dāng)著我的面吹牛戳护,可吹牛的內(nèi)容都是我干的金抡。 我是一名探鬼主播瀑焦,決...
    沈念sama閱讀 41,179評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼梗肝!你這毒婦竟也來了榛瓮?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,124評論 0 277
  • 序言:老撾萬榮一對情侶失蹤巫击,失蹤者是張志新(化名)和其女友劉穎禀晓,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體坝锰,經(jīng)...
    沈念sama閱讀 46,657評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡粹懒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了顷级。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凫乖。...
    茶點(diǎn)故事閱讀 40,872評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖弓颈,靈堂內(nèi)的尸體忽然破棺而出帽芽,到底是詐尸還是另有隱情,我是刑警寧澤翔冀,帶...
    沈念sama閱讀 36,533評論 5 351
  • 正文 年R本政府宣布导街,位于F島的核電站,受9級特大地震影響橘蜜,放射性物質(zhì)發(fā)生泄漏菊匿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評論 3 336
  • 文/蒙蒙 一计福、第九天 我趴在偏房一處隱蔽的房頂上張望跌捆。 院中可真熱鬧,春花似錦象颖、人聲如沸佩厚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽抄瓦。三九已至,卻和暖如春陶冷,著一層夾襖步出監(jiān)牢的瞬間钙姊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評論 1 274
  • 我被黑心中介騙來泰國打工埂伦, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留煞额,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,304評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像膊毁,于是被迫代替她去往敵國和親胀莹。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評論 2 361

推薦閱讀更多精彩內(nèi)容