iOS中UITextField帶有PlaceHolder屬性,能夠方便用於提示輸入。可是一樣能夠進行文本輸入的UITextView控件則沒有PlaceHolder屬性,仍是有些不方便的,尤爲是對於略帶強迫症的我來講。spa
而後搜索了一番,發現廣大開發者的智慧的無窮的,找到一種替代方案,以下:code
核心思路就是使用2個UITextView來模擬PlaceHolder的效果,其中作爲輸入區域的TextView在表面,背景要設爲透明,做爲PlaceHolder角色的TextView則在底層,二者經過UITextViewDelegate來動態控制。blog
代碼實現以下:開發
//經過判斷表層TextView的內容來實現底層TextView的顯示於隱藏 -(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{ if(![text isEqualToString:@""]) { [_backgroundTextView setHidden:YES]; } if([text isEqualToString:@""]&&range.length==1&&range.location==0){ [_backgroundTextView setHidden:NO]; } if ([text isEqualToString:@"\n"]) { [textView resignFirstResponder]; return NO; } return YES; }
大概就是上面這樣的咯,總之,任何實現都是有可行的替代方案的。io
同理,使用一個Label和一個TextView也是能夠的。另外還能夠自行繪製等,有不少不錯的替代方案class