1. 程式人生 > >iOS 用UITextView實現UITextField的多行顯示效果 並計算輸入剩餘數

iOS 用UITextView實現UITextField的多行顯示效果 並計算輸入剩餘數

又下班了,夜色撩人,心情舒暢趁加班寫篇文章放鬆下。

在iOS中的文字輸入框並不像Android輸入框那樣可以進行多行顯示,但iOS中有個富文字UITextView可以多行輸入,但它沒有placeholder屬性,這個可以結合Label實現.來各位大神看程式碼

.h檔案 加上這個代理 UITextViewDelegate

@property(nonatomic,strong)UITextView *textView; @property(nonatomic,strong)UILabel *placeHolderLabel; @property(nonatomic,strong)UILabel *residueLabel;// 輸入文字時剩餘字數 .m檔案  -(void)viewDidLoad {    //底部檢視  UIView *bgView= [[UIView alloc]initWithFrame:self.view.frame]; //先建立個方便多行輸入的textView  self.textView =[ [UITextView alloc]initWithFrame:CGRectMake(5,50,300,170)];  self.textView.delegate = self;  self.textView.layer.borderWidth = 1.0;//邊寬  self.textView.layer.cornerRadius = 5.0//設定圓角  self.textView.layer.borderColor =[[UIColor grayColor]colorWithAlphaComponet:0,5]; //再建立個可以放置預設字的lable  self.placeHolderLabel = [[UILabel alloc]initWithFrame:CGRectMake(5,-5,290,60)]; self.placeHolderLabel.numberOfLiner = 0;   self.placeHolderLabel.text = @"請輸入你的意見最多140字";   self.placeHolderLabel.backgroudColor =[UIColor clearColor]; //多餘的一步不需要的可以不寫  計算textview的輸入字數 self.residuLabel = [[UILabel alloc]initWithFrame:CGReactMake:(240,140,60,20)]; self.residuLabel.backgroudColor = [UIColor clearColor]; self.residuLabel.font = [UIFont fontWithName:@"Arial" size:12.0f]; self.residuLabel.text =[NSString stringWitFotmat:@"140/140"]; self.residuLabel.textColor = [[UIColor grayColor]colorWithAlphaComponent:0.5];  //最後新增上即可  [bgView addSubview :self.textView];  [self.textView addSubview:self.placeHolderLabel]; }

//接下來通過textView的代理方法實現textfield的點選置空預設自負效果 

-(void)textViewDidChange:(UITextView*)textView

{

   if([textView.text length] == 0){

      self.placeHolderLabel.text = @"請輸入你的意見最多140字";

    }else{

       self.placeHolderLabel.text = @"";//這裡給空

    }

    //計算剩餘字數   不需要的也可不寫

    NSString *nsTextCotent = textView.text;

    int existTextNum = [nsTextContent length];

    int remainTextNum = 140 - existTextNum;

     self.residuLabel.text = [NSString stringWithFormat:@"%d/140",remainTextNum];

}

//設定超出最大字數(140字)即不可輸入 也是textview的代理方法

-(BOOL)textView:(UITextView*)textView shouldChangeTextInRange:(NSRange)range

replacementText:(NSString*)text

{

    if ([text isEqualToString:@"\n"]) {     //這裡"\n"對應的是鍵盤的 return 回收鍵盤之用

    {

       [textView resignFirstResponder];

       return YES;

    }

    if (rang.location >= 140)

    {

     retrun NO;

    }else

    {

       return YES;

    }

}