激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - IOS - IOS textField限制字節長度

IOS textField限制字節長度

2021-01-07 15:10j12y12x12 IOS

這篇文章主要介紹了IOS textField限制字節長度的相關資料,需要的朋友可以參考下

OC語言中,NSString類型的字符串,視英文字母和漢字都為一個長度(string.length把一個漢字也當做一個長度),而實際上,一個英文字母只占用1個字節,一個漢字占用2個字節。

有時又有需求,需要限定字節數目,而不是內容個數,就需要通過一些方法獲取到字符串的字節數。比如,限定10個字節,則最多可以輸入10個英文字母,或者5個漢字。

監聽textField的長度變化,就需要設置textField的代理。

但是有個bug,監聽內容變化的代理方法

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

在點擊鍵盤輸入是正常的,但如果不點擊鍵盤按鍵,拿漢字輸入舉例,輸入一個字后,鍵盤上面會出現與該字可能是詞語的字,點上面出現的字來輸入,就不會觸發上面的代理方法。

所以這個代理方法不能用,我們需要通過注冊textField的通知來監聽。

?
1
2
//注冊通知,textfield內容改變調用
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldDidChange:) name:UITextFieldTextDidChangeNotification object:self.testTextField];

實現通知方法

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
- (void)textFieldDidChange:(NSNotification *)note{
UITextField *textField = note.object;
//獲取文本框內容的字節數
int bytes = [self stringConvertToInt:self.testTextField.text];
//設置不能超過32個字節,因為不能有半個漢字,所以以字符串長度為單位。
if (bytes > 16)
{
//超出字節數,還是原來的內容
self.testTextField.text = self.lastTextContent;
}
else
{
self.lastTextContent = self.testTextField.text;
}
}
//得到字節數函數
- (int)stringConvertToInt:(NSString*)strtemp
{
int strlength = 0;
char* p = (char*)[strtemp cStringUsingEncoding:NSUnicodeStringEncoding];
for (int i=0 ; i<[strtemp lengthOfBytesUsingEncoding:NSUnicodeStringEncoding] ;i++)
{
if (*p) {
p++;
strlength++;
}
else {
p++;
}
}
return (strlength+1)/2;
}

如果textField一開始就有內容,就要獲取到,用代理方法

?
1
2
3
4
5
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
self.lastTextContent = textField.text;
return YES;
}

以上所述是小編給大家介紹的IOS textField限制字節長度的相關內容,希望對大家有所幫助。

延伸 · 閱讀

精彩推薦
  • IOSiOS開發之視圖切換

    iOS開發之視圖切換

    在iOS開發中視圖的切換是很頻繁的,獨立的視圖應用在實際開發過程中并不常見,除非你的應用足夠簡單。在iOS開發中常用的視圖切換有三種,今天我們將...

    執著丶執念5272021-01-16
  • IOSiOS實現控制屏幕常亮不變暗的方法示例

    iOS實現控制屏幕常亮不變暗的方法示例

    最近在工作中遇到了要將iOS屏幕保持常亮的需求,所以下面這篇文章主要給大家介紹了關于利用iOS如何實現控制屏幕常亮不變暗的方法,文中給出了詳細的...

    隨風13332021-04-02
  • IOSiOS開發技巧之狀態欄字體顏色的設置方法

    iOS開發技巧之狀態欄字體顏色的設置方法

    有時候我們需要根據不同的背景修改狀態欄字體的顏色,下面這篇文章主要給大家介紹了關于iOS開發技巧之狀態欄字體顏色的設置方法,文中通過示例代碼...

    夢想家-mxj8922021-05-10
  • IOSiOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)

    iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和

    這篇文章主要介紹了iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)的相關資料,需要的朋友可以參考下...

    CodingFire13652021-02-26
  • IOS詳解iOS中多個網絡請求的同步問題總結

    詳解iOS中多個網絡請求的同步問題總結

    這篇文章主要介紹了詳解iOS中多個網絡請求的同步問題總結,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧...

    liang199111302021-03-15
  • IOSiOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    這篇文章主要介紹了iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果的相關資料,需要的朋友可以參考下...

    jiangamh8882021-01-11
  • IOSiOS中MD5加密算法的介紹和使用

    iOS中MD5加密算法的介紹和使用

    MD5加密是最常用的加密方法之一,是從一段字符串中通過相應特征生成一段32位的數字字母混合碼。對輸入信息生成唯一的128位散列值(32個字符)。這篇文...

    LYSNote5432021-02-04
  • IOSiOS中UILabel實現長按復制功能實例代碼

    iOS中UILabel實現長按復制功能實例代碼

    在iOS開發過程中,有時候會用到UILabel展示的內容,那么就設計到點擊UILabel復制它上面展示的內容的功能,也就是Label長按復制功能,下面這篇文章主要給大...

    devilx12792021-04-02
主站蜘蛛池模板: 97青青草视频 | 一级黄色片在线看 | 亚洲天堂字幕 | 娇喘视频在线观看 | 毛片视频大全 | 欧美高清另类自拍视频在线看 | 好吊色欧美一区二区三区四区 | 欧美激情精品久久久久久久久久 | 孕妇体内谢精满日本电影 | 国产亚洲综合精品 | 中文在线观看免费视频 | 免费网站看v片在线a | 欧美日韩在线中文 | 国产成人在线免费观看视频 | 久久久综合视频 | 色婷婷av一区二区三区久久 | 亚洲精品久久久久久 | 1314av| 久久久成人免费视频 | 亚洲精品永久视频 | 久久久久久亚洲综合影院红桃 | 失禁高潮抽搐喷水h | 中文字幕激情 | 国产精品美女久久久免费 | 欧美国产日韩在线观看成人 | 一色屋任你操 | 久草在线观看资源 | 国产在线观看91精品 | 免费毛片观看 | 黄免费在线 | 久久精品成人 | 99久久精品日本一区二区免费 | 久久久精品视频在线观看 | xxxx69hd一hd72 | 国产午夜免费福利 | h视频免费观看 | 看一级毛片 | 国产资源在线观看视频 | 欧美羞羞视频 | 久久国产精品久久久久久久久久 | 成人午夜免费看 |