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;
}
}