iOS開發-帶Placeholder的UITextView實現


iOS中UITextField帶有PlaceHolder屬性,可以方便用於提示輸入。但是同樣可以進行文本輸入的UITextView控件則沒有PlaceHolder屬性,還是有些不方便的,尤其是對於略帶強迫症的我來說。

然后搜索了一番,發現廣大開發者的智慧的無窮的,找到一種替代方案,如下:

 

核心思路就是使用2個UITextView來模擬PlaceHolder的效果,其中做為輸入區域的TextView在表面,背景要設為透明,作為PlaceHolder角色的TextView則在底層,兩者通過UITextViewDelegate來動態控制。

代碼實現如下:

//通過判斷表層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;
}

 

大概就是上面這樣的咯,總之,任何實現都是有可行的替代方案的。

同理,使用一個Label和一個TextView也是可以的。另外還可以自行繪制等,有很多不錯的替代方案


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM