您好,登錄后才能下訂單哦!
小編給大家分享一下iOS中輸入框字數統計和最大長度限制的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
對于 iOS 系統自帶的鍵盤,有時候它在輸入框中填入的是占位字符(已被高亮選中起來),等用戶選中鍵盤上的候選詞時,再替換為真正輸入的字符,如下:
這會帶來一個問題:比如輸入框限定最多只能輸入 10 位,當已經輸入 9 個漢字的時候,使用系統拼音鍵盤則第 10 個字的拼音就打不了(因為剩余的 1 位無法輸入完整的拼音)。
iOS輸入框的字數統計/最大長度限制
怎么辦呢?上面提到,輸入框中的拼音會被高亮選中起來,所以我們可以根據 UITextField 的 markedTextRange 屬性判斷是否存在高亮字符,如果有則不進行字數統計和字符串截斷操作。我們可以通過監聽 UIControlEventEditingChanged 事件來對輸入框內容的變化進行相應處理,如下:
[self.textField addTarget:self action:@selector(textFieldDidChanged:) forControlEvents:UIControlEventEditingChanged];
- (void)textFieldDidChanged:(UITextField *)textField { // 判斷是否存在高亮字符,如果有,則不進行字數統計和字符串截斷 UITextRange *selectedRange = textField.markedTextRange; UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0]; if (position) { return; } // maxWowdLimit 為 0,不限制字數 if (self.maxWowdLimit == 0) { return; } // 判斷是否超過最大字數限制,如果超過就截斷 if (textField.text.length > self.maxWowdLimit) { textField.text = [textField.text substringToIndex:self.maxWowdLimit]; } // 剩余字數顯示 UI 更新 }
對于 UITextView 的處理也是類似的。
另外,對于“字數”的定義是很多種理解:在 Objective-C 中字符串 NSString 的長度 length,對于一個中文漢字和一個英文字母都是 1;但如果我們要按字節來統計和限制,同一字符的在不同編碼編碼下所占的字節數也是不同的;另外有時我們要統計的是所輸入文本的單詞個數,而不是字符串的長度,所以我們需要根據不同的使用場景進行分析。
以上是“iOS中輸入框字數統計和最大長度限制的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。