代码改变世界

UITextField UITextView 字数限制

2012-08-01 16:46  Mr.Xer  阅读(318)  评论(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。
 
     代码如下:
    
view plain
//如果输入超过规定的字数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;
 
中来实现。
 
   代码:
  
view plain
- (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  中处理。
 
    代码如下:
    
view plain
//在这个地方计算输入的字数  
- (void)textViewDidChange:(UITextView *)textView  
{  
    NSString  * nsTextContent=textView.text;  
    int   existTextNum=[nsTextContent length];  
    remainTextNum_=100-existTextNum;  
}