屏幕快照 2015-03-30 上午10.07.54.png

因为 oc 中textfield和UITextView是没有直接限制字数的函数,所以需要在代理的方法中实现

1. 在@interface中声明代理

@interface MyViewController : UIViewController <UITextFieldDelegate> 
2. 设置UITextField的delegate,可以在viewDidLoad方法中实现,也可以在nib文件(或是storyboard)中实现。这个一定要实现,否则是响应不了代理的方法的

textField.delegate = self; 

3. 实现代理方法。

方法代码如下


//限制输入字数
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if ([string isEqualToString:@"\n"])
    {
        return YES;
    }
    NSString * aString = [textField.text stringByReplacingCharactersInRange:range withString:string];
    if (self.myusername == textField)//这个 if 判断是在多个输入框的时候,只限制一个输入框的时候用的,如果全部限制,则不加 if 判断即可,这里是只判断输入用户名的输入框
    {
        if ([aString length] > 5) {
            textField.text = [aString substringToIndex:5];
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"超过最大字数不能输入了" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
            [alert show];
            return NO;
        }
    }
    return YES;
}


对于UITextView 可以在这个函数中处理,代码是类似的,只是改几个字母

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


第二种方法:

就是 textview 可以使用

 - (void)textViewDidChange:(UITextView *)textView  计算剩余字数,然后再在上面的那个

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text;判断是是否可以输入。

这个比较麻烦,方法是这样的

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string  
{  
   if( remainTextNum_<=0)  
   {    
      return NO;  
   }  
   else  
   {  
        return YES;  
   }  
}  
//在这个地方计算输入的字数  
- (void)textViewDidChange:(UITextView *)textView  
{  
    NSString  * nsTextContent=textView.text;  
    int   existTextNum=[nsTextContent length];  
    remainTextNum_=100-existTextNum;   //remainTextNum_ 是全局的变量,记录剩余可输入个数
}  

感觉这样还不如直接在 shouldchangetextrange 里面直接写,这里只是给个思路


☟☟可点击下方广告支持一下☟☟

最后修改:1970 年 01 月 01 日
请我喝杯可乐,请随意打赏: ☞已打赏列表