最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS中textField限制字符串長度、字符數(shù)的方法

 更新時間:2018年06月25日 11:55:55   作者:Fiona_L  
這篇文章主要給大家介紹了關(guān)于iOS中textField限制字符串長度、字符數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對各位iOS開發(fā)者們具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

最近在開發(fā)的時候遇到一個問題,就是需要限制TextField中輸入的字符串的長度,但是不是直接根據(jù)長度限制,而是根據(jù)字符數(shù)限制,一個漢字為兩個字節(jié),數(shù)字字母為一個字符。超過字符限制則不允許繼續(xù)輸入并彈出toast提示。

這個問題有三個關(guān)鍵點:判斷字符串是否超出長度,超出長度不可輸入,判斷字符串的字符數(shù)。

下面話不多說了,來一起看看詳細(xì)的介紹吧

方法如下:

1、判斷字符串是否超出長度

[self.txfUsername addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
 - (void)textFieldDidChange:(id)sender
{
 if (self.textField.text.length > MAXLENGTH) // MAXLENGTH為最大字?jǐn)?shù)
 {
 //超出限制字?jǐn)?shù)時所要做的事
 }
}

為什么在這里要自己監(jiān)聽textField中文字的變化,而不直接使用textField的代理方法-(BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ ?

因為這個方法在中文書輸入法下,只能輸入一個詞的情況,如果聯(lián)想詞是兩個詞,也可以輸入。所以會出現(xiàn)誤差。直接監(jiān)聽UIControlEventEditingChanged 是最靠譜的。

2、超出長度不可輸入

if (self.textField.text.length > MAXLENGTH) // MAXLENGTH為最大字?jǐn)?shù)
 {
 self.textField.text = [self.txfUsername.text substringToIndex: MAXLENGTH]; // MAXLENGTH為最大字?jǐn)?shù)
 }

如果超出長度,永遠(yuǎn)把前MAXLENGTH的子字符串賦給textField的text,即textField永遠(yuǎn)只顯示前MAXLENGTH個字,視覺效果就是無法繼續(xù)輸入。

3、前面所有用到的MAXLENGTH均為字符串長度,不論數(shù)字字母還是漢字,最后要解決的問題就是判斷字符數(shù)。

//按照中文兩個字符,英文數(shù)字一個字符計算字符數(shù)
-(NSUInteger) unicodeLengthOfString: (NSString *) text {
 NSUInteger asciiLength = 0;
 for (NSUInteger i = 0; i < text.length; i++) {
 unichar uc = [text characterAtIndex: i];
 asciiLength += isascii(uc) ? 1 : 2;
 }
 return asciiLength;
}

NSUInteger lenOfBytes = [text lengthOfBytesUsingEncoding:NSUTF8StringEncoding];也試過,lengthOfBytesUsingEncoding就是按照編碼返回字節(jié)數(shù),但是NSUTF8StringEncoding是按照英文一個字符,中文三個字符來編碼的,NSUnicodeStringEncoding是按照英文數(shù)字漢字都是兩個字符編碼的,目前iOS中的編碼方法都和需求不符,所以需要另外做計算。

因為自己對字符編碼不了解,所以沒有想到正確的辦法。這個方法是在網(wǎng)上找了好久才找到。來源ymonke。但是在使用過程中發(fā)現(xiàn)返回值有問題,于是做了修改,結(jié)果如上代碼。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • iOS中block變量捕獲原理詳析

    iOS中block變量捕獲原理詳析

    這篇文章主要給大家介紹了關(guān)于iOS中block變量捕獲原理的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12
  • iOS實現(xiàn)水平方向瀑布流

    iOS實現(xiàn)水平方向瀑布流

    這篇文章主要為大家詳細(xì)介紹了iOS實現(xiàn)水平方向瀑布流的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • iOS 修改alertViewController彈框的字體顏色及字體的方法

    iOS 修改alertViewController彈框的字體顏色及字體的方法

    下面小編就為大家分享一篇iOS 修改alertViewController彈框的字體顏色及字體的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • IOS自定義UIButton九宮格效果

    IOS自定義UIButton九宮格效果

    這篇文章主要介紹了IOS自定義UIButton九宮格效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • iOS像素對齊概念解析

    iOS像素對齊概念解析

    這篇文章主要為大家詳細(xì)介紹了iOS像素對齊概念,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • iOS使用UIKeyInput自定義密碼輸入框的方法示例

    iOS使用UIKeyInput自定義密碼輸入框的方法示例

    這篇文章主要給大家介紹了關(guān)于iOS如何使用UIKeyInput自定義密碼輸入框的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • iOS中TableView如何統(tǒng)一數(shù)據(jù)源代理詳解

    iOS中TableView如何統(tǒng)一數(shù)據(jù)源代理詳解

    這篇文章主要給大家介紹了關(guān)于iOS中TableView如何統(tǒng)一數(shù)據(jù)源代理的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • 理解iOS多線程應(yīng)用的開發(fā)以及線程的創(chuàng)建方法

    理解iOS多線程應(yīng)用的開發(fā)以及線程的創(chuàng)建方法

    這篇文章主要介紹了理解iOS多線程應(yīng)用的開發(fā)以及線程的創(chuàng)建方法,代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下
    2015-11-11
  • iOS開發(fā)傻瓜式微信支付的方法教程

    iOS開發(fā)傻瓜式微信支付的方法教程

    最近因為工作的需要,要開發(fā)微信支付,發(fā)現(xiàn)網(wǎng)上的很多教程過于復(fù)雜,索性自己寫一篇,所以下面這篇文章主要跟大家分享了關(guān)于iOS開發(fā)傻瓜式微信支付的方法教程,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面來一起看看吧。
    2017-07-07
  • iOS開發(fā)之WKWebViewJavascriptBridge Xcode9中導(dǎo)致crash的解決

    iOS開發(fā)之WKWebViewJavascriptBridge Xcode9中導(dǎo)致crash的解決

    大家都知道WebViewJavascriptBridge它主要幫助我們優(yōu)雅的實現(xiàn)OC與JS的交互,下面這篇文章主要給大家介紹了關(guān)于iOS開發(fā)之WKWebViewJavascriptBridge Xcode9中導(dǎo)致crash的解決方法,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-10-10

最新評論

庐江县| 宝清县| 绥滨县| 万载县| 永兴县| 麻城市| 无为县| 无棣县| 高陵县| 平顺县| 顺义区| 白银市| 武邑县| 阳泉市| 清镇市| 乐安县| 星座| 迁安市| 巩留县| 叶城县| 斗六市| 石柱| 竹北市| 额敏县| 措美县| 乐平市| 兰坪| 慈利县| 普陀区| 凌云县| 巍山| 宁乡县| 泗阳县| 龙州县| 石景山区| 水富县| 广灵县| 青浦区| 襄樊市| 广德县| 罗山县|