天天看點

【iOS開發】設定textView的預設提示文字

最近項目中需要用到textview,但是在用的時候才發現原來textview沒有類似于textfield的那種placeholder功能。

所謂placeholder就比如使用者看到一個輸入框,然後輸入框裡面一般會有幾個淺灰色的文字,告訴使用者這個地方是用來寫什麼内容的,當使用者開始輸入的時候,這幾個文字就自然而然地消失了。這幾個文字就是'placeholder'。

網上搜了一下,有一種方式是使用代理;在.m檔案中實作textview delegate的兩個方法:

tip:使用textview的代理需要在頭檔案中加入: <uitextviewdelegate>

這種方法确實可以實作我們想要的功能,但是有一個很明顯的bug:如果使用者輸入了幾個字以後,想全部删除了重新輸入内容,那就會發現你永遠都沒法删除幹淨,因為當你把最後一個字後,textviewdidchange方法就監測到textview.text的 length = 0了 于是就會自動幫你不上你想要顯示的placeholder。。。可以腦補下那個畫面,瘋狂地删除,卻怎麼也删不幹淨。

然後就采用了另外的方法,就是添加一個label,這個label裡面寫入你想要顯示的placeholder,然後還是在textviewdidchange方法裡面,如果目前的text長度為0,就把label顯示出來,否則的話,就把label隐藏了。

把我的程式裡面和這部分内容相關的摘出來吧:

.h檔案

.m檔案

viewdidload函數:

初始化的時候把label的内容設定一下。注意這個label是添加在textview裡面的,我調試了一下 起始位置(3,3)是個還算不錯的位置。注意要把label設定成不可點選。

textview的代理:

繼續閱讀