轉: 如何實現對UITextField ,UITextView等輸入框的 字數限制
分類: ui控件
2011-10-05 16:48 533人閱讀 評論(0) 收藏 舉報
1. 如何實現對UITextField ,UITextView等輸入框的 字數限制
(1)首先,肯定要 讓controller 實現 UITextFieldDelegate (針對UITextField)或者 UITextViewDelegate(針對UITextView)
然後,將 輸入框的delegate屬性設置爲self.
(2) 然後,我們就可以用這兩個delegate的函數來實現 我們對輸入字數的限制了。
對於 UITextField 是函數
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;
或者
對於UITextView 是函數
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text;
如果允許繼續輸入,那麼返回YES,否則返回NO。
代碼如下:
- //如果輸入超過規定的字數100,就不再讓輸入
- - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
- {
- if (range.location>=100)
- {
- return NO;
- }
- else
- {
- return YES;
- }
- }
2. 如何實現 對有輸入限制的輸入框的剩餘字數的自動計算
比如上面的代碼中,輸入框的字數不能超過100,如何實時的計算出當前可以輸入多少個字符呢?
UITextField 沒有找到合適的函數,也可以在函數
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;
中來實現。
代碼:
- - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
- {
- int remainTextNum_=100;
- //計算剩下多少文字可以輸入
- if(range.location>=100)
- {
- remainTextNum_=0;
- return NO;
- }
- else
- {
- NSString * nsTextContent=string.text;
- int existTextNum=[nsTextContent length];
- remainTextNum_=100-existTextNum;
- return YES;
- }
- }
UITextView 除了可以在函數
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
中按照上面類似的辦法處理以外,還可以在函數
- (void)textViewDidChange:(UITextView *)textView 中處理。
代碼如下:
- //在這個地方計算輸入的字數
- - (void)textViewDidChange:(UITextView *)textView
- {
- NSString * nsTextContent=textView.text;
- int existTextNum=[nsTextContent length];
- remainTextNum_=100-existTextNum;
- }