如何實現對UITextField ,UITextView等輸入框的 字數限制

如何實現對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。

 

     代碼如下:

    

view plain

  1. //如果輸入超過規定的字數100,就不再讓輸入  
  2. - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text  
  3. {  
  4.     if (range.location>=100)   
  5.     {  
  6.         return  NO;  
  7.     }  
  8.     else   
  9.     {  
  10.         return YES;  
  11.     }  
  12. }  

 

 

 

2.  如何實現 對有輸入限制的輸入框的剩餘字數的自動計算

 

     比如上面的代碼中,輸入框的字數不能超過100,如何實時的計算出當前可以輸入多少個字符呢?

 

   UITextField 沒有找到合適的函數,也可以在函數

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

 

中來實現。

 

   代碼:

  

view plain

  1. - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string  
  2. {  
  3.    int  remainTextNum_=100;  
  4.    //計算剩下多少文字可以輸入  
  5.    if(range.location>=100)  
  6.    {  
  7.       remainTextNum_=0;  
  8.       
  9.       return NO;  
  10.    }  
  11.    else  
  12.    {  
  13.     NSString  * nsTextContent=string.text;  
  14.     int   existTextNum=[nsTextContent length];  
  15.     remainTextNum_=100-existTextNum;  
  16.         return YES;  
  17.    }  
  18.      
  19. }  

 

 

 

 

    UITextView 除了可以在函數

    - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

    中按照上面類似的辦法處理以外,還可以在函數  

    - (void)textViewDidChange:(UITextView *)textView  中處理。

 

    代碼如下:

    

view plain

  1. //在這個地方計算輸入的字數  
  2. - (void)textViewDidChange:(UITextView *)textView  
  3. {  
  4.     NSString  * nsTextContent=textView.text;  
  5.     int   existTextNum=[nsTextContent length];  
  6.     remainTextNum_=100-existTextNum;  
  7. }  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章